明月笑刀無情
2019-02-12 18:23:52
看了《JavaScript高級(jí)程序設(shè)計(jì)》中關(guān)于對(duì)象的介紹,關(guān)于prototype中屬性賦值為函數(shù)后有關(guān)this疑惑。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象時(shí),prototype中如果定義一個(gè)屬性指向函數(shù),在函數(shù)中引用this,為什么this是指向構(gòu)造函數(shù)而不是prototype對(duì)象?試驗(yàn):按照書上的講解,test實(shí)例的結(jié)構(gòu)應(yīng)該是如下的(偽代碼):__proto__既然和obj同一層級(jí)的,那getSuperValue應(yīng)該就和testValue是有同樣的表現(xiàn)才對(duì)呀,為什么getSuperValue可以讀取到property的值呢?
2 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
首先,“__proto__既然和obj同一層級(jí)的,那getSuperValue應(yīng)該就和testValue是有同樣的表現(xiàn)才對(duì)呀”,沒有這種規(guī)則的。
其次,this 要么為 undefined,要么指向一個(gè)對(duì)象,只有這兩種情況。所以不會(huì)指向構(gòu)造函數(shù)。
當(dāng) this 指向一個(gè)對(duì)象時(shí),具體指向誰,取決于函數(shù)定義和調(diào)用的方式,與定義在哪兒無關(guān)。
具體有六種情況,看這里吧

PIPIONE
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
添加回答
舉報(bào)
0/150
提交
取消