原型、構(gòu)造函數(shù)、實(shí)例三者關(guān)系

每創(chuàng)建一個(gè)函數(shù),該函數(shù)都會(huì)自動(dòng)帶有一個(gè)prototype屬性。該屬性是一個(gè)指針,指向一個(gè)對(duì)象,該對(duì)象稱之為原型對(duì)象(后期我們可以使用這個(gè)原型對(duì)象幫助我們?cè)趈s中實(shí)現(xiàn)繼承).

原型對(duì)象上默認(rèn)有一個(gè)屬性constructor,該屬性也是一個(gè)指針,指向其相關(guān)聯(lián)的構(gòu)造函數(shù)。

通過調(diào)用構(gòu)造函數(shù)產(chǎn)生的實(shí)例對(duì)象,都擁有一個(gè)內(nèi)部屬性,指向了原型對(duì)象。其實(shí)例對(duì)象能夠訪問原型對(duì)象上的所有屬性和方法。

總結(jié):三者的關(guān)系是,每個(gè)構(gòu)造函數(shù)都有一個(gè)原型對(duì)象,原型對(duì)象上包含著一個(gè)指向構(gòu)造函數(shù)的指針,而實(shí)例都包含著一個(gè)指向原型對(duì)象的內(nèi)部指針。通俗的說,實(shí)例可以通過內(nèi)部指針訪問到原型對(duì)象,原型對(duì)象可以通過constructor找到構(gòu)造函數(shù)。

關(guān)系圖:



完整的原型鏈

兩個(gè)關(guān)鍵的點(diǎn):

1.任何構(gòu)造函數(shù),都是Function構(gòu)造出來的。所以O(shè)bject和Person的構(gòu)造函數(shù)是Function實(shí)例化出來

2.任何對(duì)象都是繼承自object,實(shí)際上,繼承都是通過prototype來實(shí)現(xiàn)繼承的,因?yàn)閷?shí)例對(duì)象查找屬性或者方法,會(huì)從__proto__找。

3.__proto__,統(tǒng)一指向prototype對(duì)象。



對(duì)上述的圖進(jìn)行一個(gè)描述:

1.首先Person構(gòu)造函數(shù),實(shí)例對(duì)象,prototype互指

2.Object三者互指

3.Function復(fù)制實(shí)例化Object和Person,所以O(shè)bject和Person構(gòu)造函數(shù)的__proto__指向Fucntion的prototype對(duì)象

4.然后所有的對(duì)象都是繼承自O(shè)bject,所以Person和Function的prototype的__proto__都指向Object的prototype

版權(quán)聲明:本文為CSDN博主「落幕高墻」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/p13132312312/article/details/102477416

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

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

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