var a = {
b: {
m: function() {
console.log(this.p);
},
p: 'Hello'
}
};
var hello = a.b.m;
hello() // undefined
hello() 为什么是undefined? 这时的this指向哪里了?
var a = {
b: {
m: function() {
console.log(this.p);
},
p: 'Hello'
}
};
var hello = a.b.m;
hello() // undefined
hello() 为什么是undefined? 这时的this指向哪里了?
默认情况下,this
指向事件调用者
,在什么环境中调用就指向那个环境,当然this
是可以改变的
var a = {
b: {
m: function() {
console.log(this.p);
},
p: 'Hello'
}
};
var hello = a.b.m;
var hello1 = a.b.m.bind(a);
var hello2 = a.b.m.bind(a.b);
hello() // undefined 此时this指向全局window,window中无p,所以undefined
hello1() // undefined 此时this指向a对象,a对象中无p,所以说也是undefined
hello2() //Hello 此时指向的是a中的b对象,b对象有p,这样便能打印了
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
此时的this指向window,而window对象上没有p属性,故返回undefined