最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡單談?wù)刯avascript代碼復用模式

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

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

類式繼承模式-默認模式

兩個構(gòu)造函數(shù)Parent和Child的例子:

復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

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

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

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

復制代碼 代碼如下:

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

調(diào)用繼承之后的原型鏈:

進一步添加kid的屬性:

復制代碼 代碼如下:

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

原型鏈的變化情況:

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

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

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

復制代碼 代碼如下:

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

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

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

相關(guān)文章

  • JS實現(xiàn)字體選色板實例代碼

    JS實現(xiàn)字體選色板實例代碼

    這篇文章主要介紹了JS實現(xiàn)字體選色板實例代碼,有需要的朋友可以參考一下
    2013-11-11
  • text-align:justify實現(xiàn)文本兩端對齊 兼容IE

    text-align:justify實現(xiàn)文本兩端對齊 兼容IE

    對于text-align 我們再熟悉不過了,可是它有個justify屬性,平時很少用到,就鮮為人知了。justify是一種文本靠兩邊布局方式,一般應(yīng)用于書刊雜志排版;合理運用text-align:justify 有時會省去很多開發(fā)的時間,通過本文介紹text-align:justify實現(xiàn)文本兩端對齊 兼容IE
    2015-08-08
  • 使用egg.js實現(xiàn)手機、驗證碼注冊的項目實踐

    使用egg.js實現(xiàn)手機、驗證碼注冊的項目實踐

    本文主要介紹了使用egg.js實現(xiàn)手機、驗證碼注冊的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • 淺談layui 綁定form submit提交表單的注意事項

    淺談layui 綁定form submit提交表單的注意事項

    今天小編就為大家分享一篇淺談layui 綁定form submit提交表單的注意事項,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • zeroclipboard復制到剪切板的flash

    zeroclipboard復制到剪切板的flash

    雖然網(wǎng)上實現(xiàn)Ctrl + C的JS代碼已經(jīng)有很多了,但我還是向大家推薦一個比較好的插件zeroclipboard,兼容所有瀏覽器
    2010-08-08
  • Layui Form 自定義驗證的實例代碼

    Layui Form 自定義驗證的實例代碼

    今天小編就為大家分享一篇Layui Form 自定義驗證的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • IE6-8中Date不支持toISOString的修復方法

    IE6-8中Date不支持toISOString的修復方法

    這篇文章主要介紹了IE6-8中Date不支持toISOString的修復方法,需要的朋友可以參考下
    2014-05-05
  • 基于wordpress的ajax寫法詳解

    基于wordpress的ajax寫法詳解

    下面小編就為大家分享一篇基于wordpress的ajax寫法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Bootstrap modal 多彈窗之疊加關(guān)閉陰影遮罩問題的解決方法

    Bootstrap modal 多彈窗之疊加關(guān)閉陰影遮罩問題的解決方法

    這里也會遇到一次性關(guān)閉所有modal引起陰影遮罩的問題,也就是所有modal都關(guān)閉了,但是主頁面仍然被陰影遮罩。下面通過本文給大家分享解決方案,需要的朋友參考下吧
    2017-02-02
  • 框架頁面高度自動刷新的Javascript腳本

    框架頁面高度自動刷新的Javascript腳本

    框架頁面高度自動刷新,加載index.htm時候,每隔1秒鐘自動調(diào)用腳本刷新框架頁面代碼,具體實現(xiàn)如下,感興趣的朋友可以了解下
    2013-11-11

最新評論

平昌县| 屯昌县| 兖州市| 固原市| 遵义县| 芦溪县| 连云港市| 石城县| 石家庄市| 共和县| 淅川县| 宁强县| 莲花县| 德保县| 班玛县| 观塘区| 柘荣县| 仙桃市| 临沂市| 县级市| 通榆县| 万山特区| 沈丘县| 永修县| 南靖县| 武宁县| 林甸县| 天长市| 滦平县| 阜宁县| 瓦房店市| 乐安县| 嘉禾县| 安义县| 成安县| 自治县| 纳雍县| 昭觉县| 吴江市| 桂平市| 哈巴河县|