JS-原型與繼承-建構函式,普通物件,與prototype和__proto__理解
阿新 • • 發佈:2022-03-09
prototype是建構函式的屬性,指向屬於該建構函式的原型物件
__proto__是任何物件的屬性,指向該物件的建構函式的原型物件
prototype和__proto__之間的唯一區別就在於前者是建構函式的屬性,而後者是物件的屬性。
關於prototype與__proto__容易讓人疑惑的點是,建構函式也有__proto__屬性。之所以會這樣,是因為建構函式也是一個物件,它是建構函式Function()的例項物件。因此,所有建構函式的__proto__屬性都指向Function建構函式的原型物件。
同時,原型物件是特殊的物件,每個建構函式的原型物件都會有一個__proto__屬性,共同指向建構函式Object()的原型物件。建構函式Object()的原型物件,作為除自身以外被所有原型物件指向的物件,其擔當著根節點的角色,它的__proto__屬性指向null。
對照著這個回答的高贊分享的圖應該能更好的理解我的回答,也就算是一個小筆記吧