我目前正在尝试根据Nick Zakas的推荐推出自己的javascript应用程序架构,并且我使用jQuery作为基础库。我已经完成了所有工作,但是我突然意识到我已经失去了链接方法togeather的能力,因为你向沙箱询问使用点符号的方法。有一个很好的解决方案吗?有关详细信息,请参见下文。
...register module...
sandbox.click('p', function(){..});
....
每个模块都会获取在注册模块时创建的沙箱实例。 Class只是一小段代码,可将模块请求转换为核心操作。
Sandbox.prototype = {
click : function(el,cb){
return Core.click(el,cb);
}
}
在核心中,我正在返回一堆可用的方法。
... Private members above
return {
click : function(el, cb){
$(el).click(cb);
},
... more public methods
}
所以目前我没有办法将方法链接在一起,因为访问器不会有任何我想链接到它的其他方法。如果有人有任何想法会很棒。
答案 0 :(得分:1)
Sandbox.prototype = {
click : function(el,cb){
Core(el).click(cb);
}
}
会变成
Sandbox.prototype = {
click : function(el,cb){
Core(el).click(cb);
return this;
}
}
这会导致您调用Sandbox.click(元素,回调)时绑定click事件并返回沙箱。这意味着您可以使用Sandbox.click(元素,回调).click(元素,回调).someOtherMethodOnSandbox();
只需确保所有方法都返回“this”,您就可以链接。