2012-12-05 99 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,該功能完成後也會被覆蓋。