鍍金池/ 問答/HTML/ 關(guān)于js里this的指向問題

關(guān)于js里this的指向問題

代碼如下:

var obj = {
    x:1,
    y:function() {
        console.log(this.x);
    }
}
function f() {
    console.log(this.x);
}
obj.y(); //結(jié)果為1
f.call(obj.y); //結(jié)果為undefined

這里的第二個結(jié)果為什么是undefined?

回答
編輯回答
氕氘氚

call方法改變this指向 指向obj.y 其實結(jié)果就是

console.log(obj.y.x)  它肯定是未定義  
//如果想輸出1   那么就是
f.call(obj)   //this指向obj
2018年5月24日 05:54
編輯回答
遲月

this指向最近調(diào)用它的對象,
call的第一個參數(shù)是對象,f.call(obj.y)相當(dāng)于把f()里面的this指向了obj.y,
你的obj.y是個函數(shù),是個對象,他沒有x屬性,所以undefined

2017年12月21日 08:06
編輯回答
氕氘氚

因為call的參數(shù)是obj.y 如果是obj的話 那輸出的是1了 obj.y里面沒有x 所以是undefined

2017年6月22日 00:32
編輯回答
解夏

第一個,定義了一個obj對象、對象里有x=1 和y方法。所以方法里的this指的就是obj本身,自然可以找到
而第二個,obj.y是一個方法不是對象。在里面更找不到x

2018年5月14日 08:15