關(guān)于原型鏈的筆記

1.js中每個實(shí)例(object)都有一個私有屬性_proto_指向他的構(gòu)造函數(shù)原型對象(prototype).該原型對象也有一個自己的原型對象(_proto_),層層向上知道一個對象的原型為null,這是原型鏈中的最后一個環(huán)節(jié)

鏈圖
測試代碼


打印的結(jié)果

首先,GU的構(gòu)造函數(shù)是Fun()。所以:

GU._ _ proto _ _=== Fun.prototype

又因?yàn)镕oo.prototype是一個普通的對象,它的構(gòu)造函數(shù)是Object,所以:

Fun.prototype._ _ proto _ _=== Object.prototype

通過上面的代碼,我們知道這個toString()方法是在Object.prototype里面的,當(dāng)調(diào)用這個對象的本身并不存在的方法時,它會一層一層地往上去找,一直到null為止。

所以當(dāng)GU調(diào)用toString()時,JS發(fā)現(xiàn)fn中沒有這個方法,于是它就去Fun.prototype中去找,發(fā)現(xiàn)還是沒有這個方法,然后就去Object.prototype中去找,找到了,就調(diào)用Object.prototype中的toString()方法。

這就是原型鏈,GU能夠調(diào)用Object.prototype中的方法正是因?yàn)榇嬖谠玩湹臋C(jī)制。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容