在建構函式內使用call()或apply()實現繼承

zhaiduting發表於2020-11-23

在建構函式內使用call()或apply()實現繼承
此法不能繼承原型屬性或方法,因此 b.pa 的值不存在。如果想繼承 A 的原型屬性或方法該怎麼辦呢?用typescript寫兩個類 A 和 B,並且 B extends A,然後用 tsc 將 typescript 檔案編譯成 javascript 檔案。開啟 js 檔案發現原型繼承是用__extends(B, A)實現的。關鍵在於__extends()函式

function A(x){
    this.x = x;
}
A.prototype.pa = 'pa';

function B(x, y){
    A.apply(this, arguments);
    this.y = y;
}
B.prototype.pb = 'pb';

var b = new B(1, 2);
console.log(b.x, b.y, b.pa, b.pb);    // 1 2 undefined "pb"
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章