3 回答

TA貢獻(xiàn)158條經(jīng)驗(yàn) 獲得超188個(gè)贊
1、new出來的實(shí)例對象其 __proto__ 指向其構(gòu)造函數(shù)的prototype,即:
a.__proto__?===?A.prototype?//?true
2、a.__proto__ 和 A.prototype 指向同一個(gè)對象,這個(gè)對象有一個(gè) constructor 屬性,其指向構(gòu)造函數(shù)A本身。所以上面的也可以這樣寫:
a.__proto__?===?a.constructor.prototype?//?true //??????????????這里a本身是沒有constructor這個(gè)屬性的,所以會訪問a.__proto__.constructor
3、然后是 prototype 這個(gè)屬性是只有函數(shù)對象才有的,一般的對象并沒有這個(gè)屬性,而對象的 __proto__ 所指向的還是一個(gè)普通的對象,整條原型鏈上的對象都不會有prototype屬性,所以就有了 a.prototype == undefined。

TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超5個(gè)贊
是你搞錯(cuò)了,在這里a是沒有prototype的,prototype是構(gòu)造器的原型,而a是通過構(gòu)造器(new)產(chǎn)生的對象,這里A是構(gòu)造器,a是new出來的對象,所以正確的是這樣
a.__proto__==A.prototype ? //true ? 這個(gè)可以自己在瀏覽器的控制臺試
也就是說構(gòu)造器才有prototype,所有對象都有__proto__,這個(gè)可以控制臺一個(gè)一個(gè)往下試。
添加回答
舉報(bào)