亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

一個JavaScript繼承的實現

2024-09-06 12:44:38
字體:
來源:轉載
供稿:網友
Author:尹偉銘

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

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

ClassA.staticMethod = function () {
}

ClassA.prototype.instanceMethod = function () {
}

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

對于子類,使用一個prototype的鏈,來實現方法的實例方法的繼承。之所以選擇這種實現方法,是因為子類是要重寫其中的某些方法的。而prototype又是一個reference,所以直接的寫作ClassB.prototype = ClassA.prototype,會在重寫ClassB的實例方法的同時,破壞ClassA的實例方法。而修改后的方法則會屏蔽父類的。

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

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

ClassA.prototype.method1 = function () {
}

ClassA.staticMethod = function () {
}

function ClassB(){
}

ClassB.staticMethod = ClassA.staticMethod;

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

這個我抽象出來一個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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产ts一区二区| 久久精品视频99| 欧美日韩国产va另类| 91精品国产色综合| 亚洲精品国产成人| 国产精品日韩av| 亚洲美女av在线播放| 88xx成人精品| 欧美性感美女h网站在线观看免费| 成人网址在线观看| 国产精品久久久久福利| 欧美最猛性xxxxx亚洲精品| 国产精品∨欧美精品v日韩精品| 国产日本欧美视频| 欧美成人第一页| 亚洲国产精彩中文乱码av在线播放| 国产精品欧美激情在线播放| 久久av资源网站| 国产日韩精品在线观看| 欧美超级乱淫片喷水| 久久久久久久97| 欧美黄网免费在线观看| 九九九久久久久久| 91av在线视频观看| 久久综合88中文色鬼| 亚洲成色777777女色窝| 播播国产欧美激情| 日韩精品有码在线观看| 成人综合国产精品| 欧美在线观看网站| 亚洲字幕在线观看| 精品视频在线导航| 懂色av中文一区二区三区天美| 成人精品福利视频| 亚洲乱亚洲乱妇无码| 韩剧1988免费观看全集| 亚洲欧洲视频在线| 亚洲福利视频二区| 中文字幕精品视频| 亚洲热线99精品视频| 亚洲a在线观看| 日本中文字幕久久看| 欧美日韩一区二区三区在线免费观看| 成人福利视频网| 日本久久91av| 国产热re99久久6国产精品| 亚洲欧美精品在线| 一区二区国产精品视频| 色综合久久88色综合天天看泰| 欧美劲爆第一页| 91午夜理伦私人影院| 永久免费看mv网站入口亚洲| 欧美日韩国产精品一区二区不卡中文| 青青a在线精品免费观看| 国产精品com| 国产一区二区三区三区在线观看| 久久91精品国产91久久久| 日韩欧美a级成人黄色| 久久久av网站| 国内精品久久久久伊人av| 国产成人亚洲综合| 成人激情视频在线观看| 中文字幕亚洲欧美日韩在线不卡| 久久亚洲私人国产精品va| 亚洲直播在线一区| www.午夜精品| 91系列在线观看| 欧美在线视频一区| 岛国视频午夜一区免费在线观看| 欧美成人午夜影院| 91久久久久久久久久| 国产精品白嫩美女在线观看| 欧美xxxx14xxxxx性爽| 96精品视频在线| 亚洲伊人一本大道中文字幕| 不卡av在线播放| 欧美xxxwww| 国产一区二区精品丝袜| 国产精品扒开腿做| 国产精品视频内| 在线日韩日本国产亚洲| 欧美激情精品久久久| 久久久精品在线| 亚洲韩国青草视频| 亚洲香蕉av在线一区二区三区| 欧美大片在线影院| 国产一区欧美二区三区| 国产精品视频公开费视频| 日韩av色综合| 91国产高清在线| 国产精品国产三级国产aⅴ9色| 国产精品欧美日韩一区二区| 欧美成人激情视频免费观看| 国产成人精品网站| 97色在线观看免费视频| 日本欧美一级片| 国产一区二区三区三区在线观看| 欧美裸体xxxxx| 日韩在线播放av| 国产日韩欧美另类| 欧美性高潮在线| 欧美极品少妇xxxxⅹ喷水| 亚洲精品在线观看www| 久久99精品国产99久久6尤物| 欧美性受xxxx黑人猛交| 日韩电影在线观看免费| 精品国产999| 午夜精品久久久久久99热软件| 美女少妇精品视频| 久久精品亚洲一区| 欧美激情女人20p| 久久不射热爱视频精品| 在线观看国产成人av片| 色多多国产成人永久免费网站| 日韩精品高清视频| 国产亚洲视频中文字幕视频| 欧美精品久久久久久久免费观看| 国产精品久久久av| 日韩中文字幕欧美| 欧美日韩亚洲成人| 538国产精品一区二区免费视频| 亚洲精品狠狠操| 精品久久久视频| 国产精品免费一区豆花| 欧美情侣性视频| 欧美性xxxx极品hd满灌| 亚洲精品之草原avav久久| 久久免费视频网站| 亚洲色图五月天| 中文字幕在线看视频国产欧美在线看完整| 国产日韩中文在线| 国产精品九九九| 久久久久久亚洲精品| 日本中文字幕不卡免费| 国产精品亚洲片夜色在线| 国产精品视频播放| 久久久久久午夜| 日韩中文字幕在线播放| 日韩视频永久免费观看| 国产成人精品综合| 亚洲人成自拍网站| 亚洲精品福利视频| www国产91| 亚洲成人av在线播放| 黑人精品xxx一区一二区| 国产精品影片在线观看| 亚洲精品一区久久久久久| 日本电影亚洲天堂| 亚洲欧美综合v| 国产精品男人的天堂| 91九色国产社区在线观看| 欧美性xxxx极品hd满灌| 亚洲成人精品久久| 久久91亚洲精品中文字幕奶水| 6080yy精品一区二区三区| 精品亚洲aⅴ在线观看| 欧美激情视频网| 午夜精品久久久久久99热软件| 久久视频在线免费观看| 日本精品久久久久影院| 亚洲欧美制服第一页| 国产日韩欧美在线观看| 精品国产福利视频| 亚洲天天在线日亚洲洲精|