0

为什么这里的“this”对于对象的成员函数内部的自执行代码(窗口/全局范围)不同?

foo = "Window_foo"
var myobj = {
  foo: 'Object_bar',
  func: function(){
    var self = this;
    console.log("outer this.foo " + this.foo);
    console.log("outer self.foo " + self.foo);
    (function(){
       console.log("inner this.foo " + this.foo);
       console.log("inner self.foo " + self.foo);
    }());
  }
}
myobj.func();

我得到以下输出:

outer this.foo Object_bar
outer self.foo Object_bar
inner this.foo Window_foo
inner self.foo Object_bar

func 是 myObj 对象的成员函数。其中的“this”必须是 myObj 对象。那么它内部的自执行函数如何将“this”作为窗口对象?

4

2 回答 2

3

自执行函数将 window 对象作为它们的值this,即使它位于对象的方法中。

于 2015-03-09T15:37:10.393 回答
0

自引用单例对象的元素。您可以在创建对象后声明该函数,例如

foo = "Window_foo"
var myobj = {
  foo: 'Object_bar'
}

  myobj.func: function(){
    console.log("outer myobj.foo " + myobj.foo);
    console.log("outer myobj.foo " + myobj.foo);
    (function(){
       console.log("inner myobj.foo " + myobj.foo);
       console.log("inner myobj.foo " + myobj.foo);
    }());
  }
于 2015-03-09T15:35:34.833 回答