2012-02-23 222 views
2

最近我一直在大舉進入匿名函數,想知道這是如何可能的,因爲我試圖重新安排我的JS代碼庫。jQuery匿名函數 - 嵌套函數

(function (listLoad, $, undefined) { 
    listLoad.create = function(data) 
    { 
     this.init = function(data) 
     { 
     } 
    } 
} (window.listLoad = window.listLoad || {}, jQuery)); 

什麼我希望做的是明明有多項功能爲我的「listLoad」頁面,如「數據地圖」等,它們都將有初始化函數初始化頁面。

我的主要問題是如何訪問這個.init函數?我猜這是私人範圍。我已經試過:

listLoad.create.init = function(data) 

create.init = function(data) 

甚至init = function(data)

所有沒有成功寫

listLoad.create.init(); 

時,如何做到這一點?如果您覺得我對我的方案採取了錯誤的方式,我很樂意聽到關於架構的某些建議。

回答

3

事實上,您的匿名函數的語法不完整。

首先,你必須結束括號執行annonymous塊:

var listLoad = {}; 

(function (x) { 
    x.create = { 
     init: function(data) { 
      console.log('plop'); 
     } 
    } 
})(listLoad); 


listLoad.create.init() 

這招來撲通出現登錄到控制檯:

(function (...) { 
    ... 
})(...) 

塊內,你的代碼可以通過這種方式提高。

+0

太棒了,謝謝!作爲參考,我的匿名函數正在執行,但我需要將語法更改爲 listLoad.create = {init:function(data){}} 再次,謝謝! – 2012-02-23 10:37:17