亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript prototype 中屬性賦值為函數后有關 this 的疑惑

JavaScript prototype 中屬性賦值為函數后有關 this 的疑惑

明月笑刀無情 2019-02-12 18:23:52
看了《JavaScript高級程序設計》中關于對象的介紹,關于prototype中屬性賦值為函數后有關this疑惑。使用構造函數創建對象時,prototype中如果定義一個屬性指向函數,在函數中引用this,為什么this是指向構造函數而不是prototype對象?試驗:按照書上的講解,test實例的結構應該是如下的(偽代碼):__proto__既然和obj同一層級的,那getSuperValue應該就和testValue是有同樣的表現才對呀,為什么getSuperValue可以讀取到property的值呢?
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

首先,“__proto__既然和obj同一層級的,那getSuperValue應該就和testValue是有同樣的表現才對呀”,沒有這種規則的。

其次,this 要么為 undefined,要么指向一個對象,只有這兩種情況。所以不會指向構造函數。

當 this 指向一個對象時,具體指向誰,取決于函數定義和調用的方式,與定義在哪兒無關。

具體有六種情況,看這里吧


查看完整回答
反對 回復 2019-02-19
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

當運行到test.getSuperValue()時,會執行console.log(this),這時這個this指向的是test實例,所以,r的值是value in SuperType。


查看完整回答
反對 回復 2019-02-19
  • 2 回答
  • 0 關注
  • 926 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號