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,这样便能打印了
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
此时的this指向window,而window对象上没有p属性,故返回undefined