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

一個(gè)JavaScript繼承的實(shí)現(xiàn)

 更新時(shí)間:2006年10月24日 00:00:00   作者:  
Author:尹偉銘

Blog:http://my.donews.com/yinwm/

如我前面的文章說的,對于JavaScript,一個(gè)類,就是一個(gè)function,他的類方法(也就是static的)都是作為這個(gè)function的一部分,而實(shí)例方法,都是在prototype上面的。
function ClassA() {
}

ClassA.staticMethod = function () {
}

ClassA.prototype.instanceMethod = function () {
}

在我這個(gè)實(shí)現(xiàn)當(dāng)中,一個(gè)類的繼承是拷貝父類的所有類方法,這樣子類就有了父類的靜態(tài)方法。
然后讓子類的prototype.prototype指向父類的prototype.
然后可以根據(jù)自己的需要,重寫一些方法。
function ClassB() {
}
ClassB.staticMethod = ClassA.staticMethod;
ClassB.prototype.prototype = ClassA.prototype;
ClassB.prototype.instanceMethod = function () {
// method 2
}

對于子類,使用一個(gè)prototype的鏈,來實(shí)現(xiàn)方法的實(shí)例方法的繼承。之所以選擇這種實(shí)現(xiàn)方法,是因?yàn)樽宇愂且貙懫渲械哪承┓椒ǖ?。而prototype又是一個(gè)reference,所以直接的寫作ClassB.prototype = ClassA.prototype,會(huì)在重寫ClassB的實(shí)例方法的同時(shí),破壞ClassA的實(shí)例方法。而修改后的方法則會(huì)屏蔽父類的。

尋找方法的順序是,instanceA.prototype.method -> ClassA.prototype.
此時(shí)對于類方法的繼承,已經(jīng)實(shí)現(xiàn),現(xiàn)在需要實(shí)現(xiàn)在子類中,調(diào)用父類的方法。
對于Java,這樣的使用是很平常的
public void method() {
super.method();
}
在JavsScript中,為了實(shí)現(xiàn)此類功能,所以必須保留一個(gè)parent的reference,指向ParentClass.prototype.
ClassB.prototype.parent = ClassA.prototype.
那么在instanceB里面調(diào)用this.parent.method.call(this);就可以使用父類的方法了。使用call調(diào)用,是為了把自己的數(shù)據(jù)傳到父類。更漂亮的解決方法,我還沒有想到。

所以完成的代碼是
function ClassA() {
}

ClassA.prototype.method1 = function () {
}

ClassA.staticMethod = function () {
}

function ClassB(){
}

ClassB.staticMethod = ClassA.staticMethod;

ClassB.prototype.prototype = ClassB.prototype.parent = ClassA.prototype;

這個(gè)我抽象出來一個(gè)extend方法,

var LCore = function () {
}

LCore.extend = function (destination, source) {
// copy all functons
for (var prop in source) {
if (prop == “prototype”) {
continue;
}

destination.prototype[prop] = source[prop];
}

// make a reference for parent and reference prototype
destination.prototype.prototype = destination.prototype.parent = source.prototype;

return destination;

相關(guān)文章

  • 讓div層隨鼠標(biāo)移動(dòng)的實(shí)現(xiàn)代碼 ie ff

    讓div層隨鼠標(biāo)移動(dòng)的實(shí)現(xiàn)代碼 ie ff

    隨鼠標(biāo)移動(dòng)的div層使用ie ff ,大家可以注意下兼容性的問題。
    2009-12-12
  • IP地址輸入框

    IP地址輸入框

    IP地址輸入框...
    2006-08-08
  • JS document文檔的簡單操作完整示例

    JS document文檔的簡單操作完整示例

    這篇文章主要介紹了JS document文檔的簡單操作,結(jié)合完整實(shí)例形式詳細(xì)分析了JavaScript document文檔元素添加、刪除、獲取、創(chuàng)建等相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • JS異步處理的進(jìn)化史深入講解

    JS異步處理的進(jìn)化史深入講解

    這篇文章主要給大家介紹了關(guān)于JS異步處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用JS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 微信小程序?qū)崿F(xiàn)實(shí)時(shí)圓形進(jìn)度條的方法示例

    微信小程序?qū)崿F(xiàn)實(shí)時(shí)圓形進(jìn)度條的方法示例

    這篇文章主要給大家介紹了利用微信小程序?qū)崿F(xiàn)實(shí)時(shí)圓形進(jìn)度條的方法,文中給出了詳細(xì)的示例代碼,相信對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-02-02
  • 詳解webpack自動(dòng)生成html頁面

    詳解webpack自動(dòng)生成html頁面

    本篇文章主要介紹了詳解webpack自動(dòng)生成頁面,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • layui table 表格上添加日期控件的兩種方法

    layui table 表格上添加日期控件的兩種方法

    今天小編就為大家分享一篇layui table 表格上添加日期控件的兩種方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript中boolean類型之三種情景實(shí)例代碼

    JavaScript中boolean類型之三種情景實(shí)例代碼

    下面小編就為大家?guī)硪黄狫avaScript中boolean類型之三種情景實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • JS返回只包含數(shù)字類型的數(shù)組實(shí)例分析

    JS返回只包含數(shù)字類型的數(shù)組實(shí)例分析

    這篇文章主要介紹了JS返回只包含數(shù)字類型的數(shù)組實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了循環(huán)遍歷數(shù)組及正則匹配兩種實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-12-12
  • 前端大文件分片MinIO上傳的詳細(xì)代碼

    前端大文件分片MinIO上傳的詳細(xì)代碼

    這篇文章主要給大家介紹了關(guān)于前端大文件分片MinIO上傳的詳細(xì)代碼,Minio支持分片上傳大文件,這個(gè)功能可以讓用戶將大文件劃分成小塊,然后在多個(gè)并行的HTTP請求中上傳這些小塊,從而提高上傳速度和穩(wěn)定性,需要的朋友可以參考下
    2024-09-09

最新評論

孝昌县| 长白| 榆树市| 永吉县| 海宁市| 双柏县| 清河县| 阳原县| 兴安盟| 讷河市| 且末县| 石渠县| 云浮市| 青浦区| 湾仔区| 邓州市| 庆云县| 清涧县| 金门县| 左权县| 金昌市| 安乡县| 抚顺县| 攀枝花市| 洱源县| 沾化县| 房山区| 临武县| 达日县| 海盐县| 泗阳县| 星子县| 耒阳市| 从江县| 景东| 房山区| 资阳市| 威信县| 石渠县| 姜堰市| 清河县|