在以下代码中,
var myObject = {
foo: "bar",
func: function() {
var self = this;
console.log("outer func: this.foo = " + this.foo);
console.log("outer func: self.foo = " + self.foo);
(function() {
console.log("inner func: this.foo = " + this.foo);
console.log("inner func: self.foo = " + self.foo);
}());
}
};
myObject.func();
它在控制台中打印出来:
outer func: this.foo = bar
outer func: self.foo = bar
inner func: this.foo = undefined
inner func: self.foo = bar
前两个非常明显,但我不明白第三个和第四个,为什么IIFE可以访问自己但是没有访问权限?我认为它创建了一个闭包,所以它可以访问外部变量self和this?
答案 0 :(得分:0)
我不确定这会解决您的问题,但您可以通过将其作为参数传递给IIFE来绑定this
:
(function(context) {
console.log("inner func: context.foo = " + context.foo);
console.log("inner func: self.foo = " + self.foo);
}(this));