【发布时间】:2011-07-03 18:47:29
【问题描述】:
如果我陷入了这个 javascript 组织,我想知道我是否在这里遗漏了要点,或者是否有更优雅的方式来做到这一点。
基本上,我将所有内容包装在一个函数(对象)中,然后在该对象上设置方法,然后实例化包装器对象的一个实例并传入任何选项和依赖项。
我有一种预感,有一种方法可以自动运行.init() 以及可以进行的其他一些调整。我做得对吗?
function AppModuleCore(){
var AppModuleCore = this; //keep internals sane
// Various global vars, objects
AppModuleCore.defaultOptions = {};
AppModuleCore.init = function(opts) {
// todo: that thing where you extend an options object a la juery
AppModuleCore.bindEvents();
};
AppModuleCore.bindEvents = function() {
// bind events here, send to functions within AppModuleCore.<FUNCTIONNAME>();
// Example:
$("a#clicker").unbind("click");
$("a#clicker").click(function(event){
AppModuleCore.handleClickerClick(event);
});
};
AppModuleCore.handleClickerClick = function(event){
alert("clicker was clicked");
};
}
// --------------------------------------------------------------------
// instantiate AppModuleCore object and initialize with opts,
// dependency injection
// --------------------------------------------------------------------
$(document).ready(function(){
AppModuleCore = new AppModuleCore;
var options = {};
AppModuleCore.init(options);
});
【问题讨论】:
-
你没有忘记那个函数第一行代码的
var吗? -
考虑到明显的 jQuery 依赖,为什么不扩展 jQuery 对象呢? (只是好奇,讨论代码本身)。
-
@brad,是的,这是个好建议;我只是没有想到这对我有什么帮助,但我肯定在寻找将其转换为 $.extend 方法的正确方法……只是这种“格式”对我来说更熟悉。
标签: javascript jquery architecture design-patterns