'this'关键字如何与闭包一起使用?
var a = 1000;
var b = 2000;
var obj2 = {
a: 100,
b: 200,
sum: function(callback) {
callback();
},
sum1: function() {
console.log("a: " + this.a);
console.log(this.a + this.b);
}
};
var obj1 = {
a: 10,
b: 20,
callSum: function() {
obj2.sum(obj2.sum1);
}
};
obj1.callSum();
答案 0 :(得分:1)
由于obj2.sum1
函数是通过引用传递的,而不是作为对象的成员而调用的,因此this
是全局作用域,而不是obj2
。
一个简单的例子:
var a = "global"
var obj = {
a: "object",
f: function() { console.log(this.a) }
}
obj.f(); // object
var func_ref = obj.f;
func_ref(); // global
在两种情况下都将执行相同的功能。但是写obj.f()
意味着上下文的绑定:this = obj