欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單談談javascript代碼復用模式

 更新時間:2015年01月28日 16:19:39   投稿:hebedich  
這篇文章主要簡單談談javascript代碼復用模式,主要詳細介紹了類式繼承模式中的默認模式,希望大家能夠喜歡。

代碼復用有一個著名的原則,是GoF提出的:優(yōu)先使用對象組合,而不是類繼承。在javascript中,并沒有類的概念,所以代碼的復用,也并不局限于類式繼承。javascript中創(chuàng)建對象的方法很多,有構造函數,可以使用new創(chuàng)建對象,并且可以動態(tài)的修改對象。javascript的非類式繼承(可稱為現代繼承模式)復用方法也很多,例如,利用其它對象組合成所需要的對象,對象混入技術,借用和復用所需要的方法。

類式繼承模式-默認模式

兩個構造函數Parent和Child的例子:

復制代碼 代碼如下:

function Parent(name){
this.name = name||"Adam";
}
Parent.prototype.say = {
return this.name;
};
function Child(name){
}
inherit(Child,Parent);

下面是可復用繼承函數inherit()的一種實現方法:

復制代碼 代碼如下:

function inherit(C,P){
C.prototype = new P();
}

這里原型屬性應該指向一個對象,而不是一個函數,因此他必須指向一個由父構造函數所創(chuàng)建的實例,而不是指向構造函數本身。

在這之后,創(chuàng)建Child對象時,會通過原型從Parent實例獲得他的功能:

復制代碼 代碼如下:

var kid =new Child();
kid.say();//"Adam"

調用繼承之后的原型鏈:

進一步添加kid的屬性:

復制代碼 代碼如下:

var kid = new Child();
kid.name = "Patrick";
kid.say();//"Patrick"

原型鏈的變化情況:

可以在自己對象屬性里面找到name,就不用再去查找原型鏈了。

使用上述模式的缺點,其中一個缺點是同時繼承了兩個對象的屬性,即添加到this的屬性及原型屬性。大多數時候,不需要自身的這些屬性。

另外一個缺點,使用inherit()繼承不支持將參數傳遞給子構造函數中,例如:

復制代碼 代碼如下:

var s = new Child("Seth");
s.say();//"Adam"

這個結果并不是期望的,雖然子構造函數可以將參數傳遞到父構造函數中,但是這樣每次需要一個子對象時,都必須重新執(zhí)行這種繼承機制,而且效率低下,原因是最終會重新創(chuàng)建父對象。

本文就先到這里了,后續(xù)我們將持續(xù)更新javascript代碼復用模式的其余幾種模式。

相關文章

  • 老生常談遮罩層 滾動條的問題

    老生常談遮罩層 滾動條的問題

    小編遇到的問題是在彈出層后面的 遮罩層,因為有滾動條,導致滾動條下面不可視區(qū)域沒有遮罩層。下面就為大家介紹一下解決方法
    2016-04-04
  • JavaScript面向對象編寫購物車功能

    JavaScript面向對象編寫購物車功能

    這篇文章主要為大家詳細介紹了JavaScript面向對象編寫購物車功能的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Three.js實現臉書元宇宙3D動態(tài)Logo效果

    Three.js實現臉書元宇宙3D動態(tài)Logo效果

    本文主要講述通過 Three.js + Blender 技術棧,實現 Meta 公司炫酷的 3D 動態(tài) Logo,內容包括基礎模型圓環(huán)、環(huán)面扭結、管道及模型生成、模型加載、添加動畫、添加點擊事件、更換材質等
    2021-11-11
  • JS查找字符串中出現次數最多的字符

    JS查找字符串中出現次數最多的字符

    本文給大家?guī)韮煞Njs中查找字符串中出現次數最多的字符,在這兩種方法中小編推薦使用第二種,對js查找字符串出現次數的相關知識感興趣的朋友一起看看吧
    2016-09-09
  • js實現圖片360度旋轉

    js實現圖片360度旋轉

    本文主要介紹了js實現圖片360度旋轉的思路與方法。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • Canvas放置反彈效果隨機圖形(實例)

    Canvas放置反彈效果隨機圖形(實例)

    下面小編就為大家?guī)硪黄狢anvas放置反彈效果隨機圖形(實例)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 基于JavaScript實現瀏覽器添加收藏功能

    基于JavaScript實現瀏覽器添加收藏功能

    今天搞項目的時候為了實現瀏覽者實現添加收藏的功能,特地了解了一下相關的API,整理了一段代碼幫助大家實現瀏覽器添加收藏功能,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • 十個利用JavaScript實現的愛心動畫特效

    十個利用JavaScript實現的愛心動畫特效

    情人節(jié)將至,程序員證明自己不是直男的時候到啦!小編為大家準備了十個通過JavaScript實現的愛心動畫特效,快學起來,到時候給女朋友一個驚喜吧
    2022-02-02
  • JavaScript 完成注冊頁面表單校驗的實例

    JavaScript 完成注冊頁面表單校驗的實例

    下面小編就為大家?guī)硪黄狫avaScript 完成注冊頁面表單校驗的實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • TypeScript中類型兼容性的示例詳解

    TypeScript中類型兼容性的示例詳解

    JavaScript是一門弱類型語言,它對類型是弱校驗,所以才有了TypeScript。本文就來和大家一起看看TypeScript的類型兼容性的概念和分類,需要的可以參考一下
    2022-08-08

最新評論