0

我有以下代码:

var myVar = (function (window) {    

    myobj = {};

    myobj.boo = function() {
        alert('hi');
    };

    window.myVar = myobj;

})(window);

myVar.boo();

为什么我在调用 myVar.boo() 时没有收到警报?我创建了一个匿名的自执行函数并输入了 window 对象。在里面我有另一个对象,它分配了一个方法。然后我将全局 myVar 变量分配给这个 obj。这应该为 myobj 对象提供一个别名。但是,当我调用该函数时,我得到一个无法调用未定义错误的方法“boo”

4

2 回答 2

3

您应该删除第一个作业

var myVar =

当您将 myVar 值替换为不返回任何内容的函数的返回时,

或更可能从您的函数返回 myVar,而不是从闭包内部分配:

var myVar = (function() {
  var myobj = {};

  myobj.boo = function() {
      alert('hi');
  };

  return myobj;
})();
于 2012-12-05T16:57:05.430 回答
1

您在这里定义myVar一个undefined值。当您初始化它时,它会调用匿名函数。并存储返回值。但是该函数不返回任何内容。所以没有分配给myVar. 即使您添加了window.myVar = myobj,它也会在函数完成时被覆盖。

于 2012-12-05T17:01:49.227 回答