1、引用類型,都具有對象特性,即可自由擴(kuò)展屬性。
2、引用類型,都有一個(gè)隱式原型 __proto__
屬性,屬性值是一個(gè)普通的對象。
3、引用類型,隱式原型 __proto__
的屬性值指向它的構(gòu)造函數(shù)的顯式原型 prototype
屬性值。
4、當(dāng)你試圖得到一個(gè)對象的某個(gè)屬性時(shí),如果這個(gè)對象本身沒有這個(gè)屬性,那么它會去它的隱式原型 __proto__
(也就是它的構(gòu)造函數(shù)的顯式原型 prototype
)中尋找。
在自定義構(gòu)造函數(shù)時(shí)原型對象只會獲得constructor
屬性,其他的都是從Object
繼承而來,調(diào)用構(gòu)造函數(shù)創(chuàng)建實(shí)例就是將實(shí)例的[[Prototype]]
指針被賦值為構(gòu)造函數(shù)的原型對象。[[Prototype]]
在腳本中沒有訪問它的標(biāo)準(zhǔn)方式,但是瀏覽器提供了__proto__
.
constructor
屬性是原型的它會指回與之關(guān)聯(lián)的構(gòu)造函數(shù)
個(gè)人理解:一般形式的對象數(shù)組,引用類型,有的是__proto__
指向它的原型,而構(gòu)造函數(shù)它的是prototype
屬性指向原型,這兩個(gè)都是指向原型的。
實(shí)列和構(gòu)造函數(shù)是一級的(它兩更像是兄弟關(guān)系),它們指向同一個(gè)原型(構(gòu)造函數(shù)通過prototype
訪問,實(shí)例通過__proto__
訪問)報(bào)錯(cuò)的兩行是打錯(cuò)了但是不影響
?
然后在看對象實(shí)例原型的原型
?
這是對象實(shí)例xiaoMing的原型的原型,也是Object
的原型內(nèi)置的,所有的實(shí)例對象構(gòu)造函數(shù)即對象類型都是Object的實(shí)例
Object
原型的的原型是null
?
Object實(shí)際只是一個(gè)概念,JavaScript這個(gè)語言基于對象,是說所有內(nèi)建類型都被抽象出了一組公用的方法和屬性(也可以叫行為和狀態(tài)),我們就想像只擁有這些特性的一個(gè)東西就是Object
簡單的關(guān)系如下圖
?
本文摘自 :https://www.cnblogs.com/