亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

腳本原型鏈接更改目標

腳本原型鏈接更改目標

慕少森 2022-09-11 20:27:41
我是一名學習編程的學生。我有一個問題。    function a () {    }    a.prototype.prtSomething = function(arg) { console.log(arg); }    function b () {    }    var myObj = new b();如果我想在 myObj 中使用 a 的方法,我們使用此代碼。b.prototype = Object.create(a.prototype);b.prototype.constructor = b;這意味著更改范圍鏈接的目標。但是我們為什么不使用這段代碼呢?b.prototype.__proto__ = a.prototype;我認為創建和使用新對象一定有理由。但我不知道。請教我。謝謝。
查看完整描述

1 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

至少有一個很好的理由:該功能已被棄用,因此您不應將其用于將來的兼容性。__proto__

我建議閱讀有關該主題的MDN頁面,如果您正在學習,還可以閱讀有關繼承的鏈接頁面。

有用的附加說明:使用是一種以原型方式模擬類繼承的方法(b從a繼承),而無需調用“父”(a)構造函數。如果您希望使用調用的“父”構造函數模擬繼承,則可以使用b.prototype = Object.create(a.prototype);b.prototype = new a();

當然,它是對類行為的模擬,它在細節上有所不同,因為原型不是類,例如,您可以在創建實例將函數動態添加到 的原型中,并且新函數將可用于該實例,因為它通過引用工作。以類似的方式,第二個示例不會為每個后續實例執行 的構造函數,而是在將其分配給 的原型時只執行一次。abab

實際上,當你了解原型時,我發現它們真的很強大,允許許多組合。

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();


查看完整回答
反對 回復 2022-09-11
  • 1 回答
  • 0 關注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號