var a = { b: { m: function() { console.log(this.p);
}, p: 'Hello'
}
};var hello = a.b.m;
hello() // undefinedhello() 为什么是undefined? 这时的this指向哪里了?
1 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
默认情况下,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,所以undefinedhello1() // undefined 此时this指向a对象,a对象中无p,所以说也是undefinedhello2() //Hello 此时指向的是a中的b对象,b对象有p,这样便能打印了
添加回答
举报
0/150
提交
取消