将对象绑定到全局范围

时间:2012-12-05 16:53:51

标签: javascript

我有以下代码:

var myVar = (function (window) {    

    myobj = {};

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

    window.myVar = myobj;

})(window);

myVar.boo();

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

2 个答案:

答案 0 :(得分:3)

您应该删除第一个作业

var myVar =

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

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

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

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

  return myobj;
})();

答案 1 :(得分:1)

您在此处定义myVar undefined值。当你初始化它时,它调用匿名函数。并存储返回的值。但该功能不会返回任何内容。因此,myVar没有分配任何内容。即使你添加了window.myVar = myobj,它也会在函数完成时被覆盖。