1 回答

TA貢獻1804條經驗 獲得超7個贊
至少有一個很好的理由:該功能已被棄用,因此您不應將其用于將來的兼容性。__proto__
我建議閱讀有關該主題的MDN頁面,如果您正在學習,還可以閱讀有關繼承的鏈接頁面。
有用的附加說明:使用是一種以原型方式模擬類繼承的方法(b從a繼承),而無需調用“父”(a)構造函數。如果您希望使用調用的“父”構造函數模擬繼承,則可以使用b.prototype = Object.create(a.prototype);
b.prototype = new a();
當然,它是對類行為的模擬,它在細節上有所不同,因為原型不是類,例如,您可以在創建實例后將函數動態添加到 的原型中,并且新函數將可用于該實例,因為它通過引用工作。以類似的方式,第二個示例不會為每個后續實例執行 的構造函數,而是在將其分配給 的原型時只執行一次。a
b
a
b
實際上,當你了解原型時,我發現它們真的很強大,允許許多組合。
function a () {
console.log('a constructor');
}
a.prototype.prtSomething = function(arg) { console.log(arg); }
function b () {
console.log('b constructor');
}
b.prototype = Object.create(a.prototype);
b.prototype.constructor = b;
var myObj = new b();
展開代碼段
function a () {
console.log('a constructor');
}
a.prototype.prtSomething = function(arg) { console.log(arg); }
function b () {
console.log('b constructor');
}
b.prototype = new a();
b.prototype.constructor = b;
var myObj = new b();
添加回答
舉報