帮助可扩展的JavaScript应用程序架构和链接

时间:2011-08-23 20:58:31

标签: javascript jquery

我目前正在尝试根据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
}

所以目前我没有办法将方法链接在一起,因为访问器不会有任何我想链接到它的其他方法。如果有人有任何想法会很棒。

1 个答案:

答案 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”,您就可以链接。