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:您不会向变量返回任何内容。