Javascript 将对象绑定到全局范围

Javascript 将对象绑定到全局范围,javascript,Javascript,我有以下代码: var myVar = (function (window) { myobj = {}; myobj.boo = function() { alert('hi'); }; window.myVar = myobj; })(window); myVar.boo(); 为什么调用myVar.boo()时不返回警报?我创建了一个匿名的自动执行函数,并输入了window对象。里面有另一个对象,它有一个指定的方法。然后,我

我有以下代码:

var myVar = (function (window) {    

    myobj = {};

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

    window.myVar = myobj;

})(window);

myVar.boo();

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

您应该删除第一个赋值

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

或者更可能从函数返回myVar,而不是从闭包内部赋值:

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

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

  return myobj;
})();

您应该删除第一个分配

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

或者更可能从函数返回myVar,而不是从闭包内部赋值:

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

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

  return myobj;
})();

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

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

myobj.boo()
将不幸地执行此操作。不要忘记
var
@elduderino:您没有向变量返回任何内容。
myobj.boo()
将不幸地执行此操作。不要忘记
var
@elduderino:您不会向变量返回任何内容。