"这"在自执行代码中

时间:2015-03-09 15:31:35

标签: javascript self-executing-function

为什么在这里"这"在对象的成员函数中,自执行代码(window / globalScope)是不同的?

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对象的成员函数。 "这"在里面它必须是myObj对象。那么它内部的自我执行功能如何具有"这个"作为窗口对象?

2 个答案:

答案 0 :(得分:3)

自执行函数将窗口对象作为其this的值,即使它在对象的方法中也是如此。

答案 1 :(得分: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);
    }());
  }