構(gòu)建函數(shù)、原型和對(duì)象的聯(lián)系

JavaScript構(gòu)建函數(shù)原型和對(duì)象.png
  1. 從上面的圖示中可以看到,創(chuàng)建Person對(duì)象雖然使用的是Person構(gòu)造函數(shù),但是對(duì)象創(chuàng)建出來之后,這個(gè)p1對(duì)象其實(shí)已經(jīng)與Person構(gòu)造函數(shù)沒有任何關(guān)系了,p1對(duì)象的[[ prototype ]]屬性指向的是Person構(gòu)造函數(shù)的原型對(duì)象。
  2. 如果使用new Person()創(chuàng)建多個(gè)對(duì)象,則多個(gè)對(duì)象都會(huì)同時(shí)指向Person構(gòu)造函數(shù)的原型對(duì)象。
  3. 我們可以手動(dòng)給這個(gè)原型對(duì)象添加屬性和方法,那么p1,p2,p3…這些對(duì)象就會(huì)共享這些在原型中添加的屬性和方法。
  4. 如果我們?cè)L問p1中的一個(gè)屬性name,如果在p1對(duì)象中找到,則直接返回。如果p1對(duì)象中沒有找到,則直接去p1對(duì)象的[[prototype]]屬性指向的原型對(duì)象中查找,如果查找到則返回。(如果原型中也沒有找到,則繼續(xù)向上找原型的原型—原型鏈。 后面再講)。
  5. 如果通過p1對(duì)象添加了一個(gè)屬性name,則p1對(duì)象來說就屏蔽了原型中的屬性name。 換句話說:在p1中就沒有辦法訪問到原型的屬性name了。
  6. 通過p1對(duì)象只能讀取原型中的屬性name的值,而不能修改原型中的屬性name的值。 p1.name = “李四”; 并不是修改了原型中的值,而是在p1對(duì)象中給添加了一個(gè)屬性name。
?著作權(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)容