我有以下代码:
var myVar = (function (window) {
myobj = {};
myobj.boo = function() {
alert('hi');
};
window.myVar = myobj;
})(window);
myVar.boo();
当我调用myVar.boo()时,为什么不收回警报?我已经创建了一个匿名的自执行函数并输入了window对象。在里面我有另一个对象分配给它的方法。然后我将全局myVar变量赋给此obj。这应该为我的myobj对象提供别名。但是,当我调用该函数时,我得到一个无法调用方法'boo'的未定义错误
答案 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
,它也会在函数完成时被覆盖。