var obj = {
a: function(){
//‘this‘ is ‘obj‘,是真正的this
console.log(this);
var func = function(){
//‘this‘ is ‘window‘, 容易混淆的地方,上层对象无法通过this引用了,这里的this是window对象了。
console.log(this);
//所以下面这句话出错,无法找到属性
console.log(this.c);
};
func();
},
b : function(){
var func = function(){
//‘this‘ is ‘obj‘,是通过bind传入的。
console.log(this);
console.log(this.c);
}.bind(this);
func();
},
c : ‘Hello!‘
}
obj.a();
obj.b();
在实际开发工作中,如果需要在函数内部应用外部对象,可以通过bind传入;如果需要在嵌套函数或回调函数内部应用上级对象,也可以通过bind传入。
原文:https://blog.51cto.com/livestreaming/2654785