2012-12-05 101 views
0

我有以下代码:对象绑定到全球范围内

var myVar = (function (window) {  

    myobj = {}; 

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

    window.myVar = myobj; 

})(window); 

myVar.boo(); 

为什么我不回来了警报,当我打电话myVar.boo()?我创建了一个匿名自执行函数并馈入窗口对象。在里面,我有一个方法分配给它的另一个对象。然后,我将全局myVar变量分配给这个obj。这应该为我的myobj对象提供别名。然而,当我调用该函数,我得到一个无法调用未定义的错误的方法“嘘”

+0

'myobj.boo()'将不幸地做到这一点。 *不要忘记'var' *。 – jAndy

+0

@elduderino:你没有给变量返回任何东西。 – karthick

回答

3

您应该删除第一个任务

var myVar = 

如要更换myVar的值,那并不是一个函数的返回“T从你的函数返回任何东西,

或者更可能的回报myVar的,而不是从瓶盖内分配:

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

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

    return myobj; 
})(); 
1

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