麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一级片一区 | 日韩视频一二三 | 欧美在线中文字幕 | 久久久久久久亚洲视频 | 中文日韩字幕 | 涩涩伊人| 日韩理论电影网 | 久章草在线观看 | 免费毛片在线 | 亚洲精品久久久久久久久久久 | 色就操| 久久91久久久久麻豆精品 | 色综合久久久久久久久久久 | 国产黄色录像片 | 国内精品伊人久久久久网站 | av懂色| 亚洲一级片免费观看 | av免费在线网站 | 欧美wwwsss9999 | 最近日本电影hd免费观看 | 欧美日韩经典在线 | www.69色| 最新黄色电影网站 | 一区二区三区欧洲 | 国产手机在线视频 | 日本在线播放一区二区三区 | 性片网站 | 欧美中文字幕一区二区三区亚洲 | gogo全球大胆高清人露出91 | 久久夜夜视频 | 亚洲激情91 | 日韩视频在线观看免费 | 欧美精品成人一区二区三区四区 | 国产精品久久久久久久亚洲按摩 | 羞羞网站视频 | 午夜视频在线免费观看 | 日韩黄色片在线观看 | 91短视频版高清在线观看www | 久久久精品视频免费看 | 成人毛片免费播放 | 92看片淫黄大片一级 |