2012-02-23 115 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