可扩展JavaScript应用程序体系结构和链接帮助

可扩展JavaScript应用程序体系结构和链接帮助,javascript,jquery,Javascript,Jquery,我目前正在尝试根据推荐的javascript应用程序体系结构推出自己的javascript应用程序体系结构,并使用jQuery作为基础库。我的一切都很正常,但我突然意识到,自从你向沙盒询问使用点符号的方法以来,我已经失去了将方法链接到一起的能力。有好的解决办法吗?有关更多详细信息,请参见下文 ...register module... sandbox.click('p', function(){..}); .... 每个模块都获得一个沙箱实例,该实例是在注册模块时创建的。该类只是将模块请求

我目前正在尝试根据推荐的javascript应用程序体系结构推出自己的javascript应用程序体系结构,并使用jQuery作为基础库。我的一切都很正常,但我突然意识到,自从你向沙盒询问使用点符号的方法以来,我已经失去了将方法链接到一起的能力。有好的解决办法吗?有关更多详细信息,请参见下文

...register module...

sandbox.click('p', function(){..});

....
每个模块都获得一个沙箱实例,该实例是在注册模块时创建的。该类只是将模块请求转换为核心操作的一小段代码

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
}
因此,目前我没有将方法链接在一起的方法,因为访问器将没有我想要链接到它的任何其他方法。如果有人有任何想法那就太好了

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。这意味着您可以使用沙盒


只要确保所有方法都返回“this”,您就可以链接。

我必须看看沙盒是如何创建的。如果沙盒总是返回自身,那么您将能够调用沙盒上的其他方法,就像调用jquery对象上的方法一样。这显然不适用于ajax和getter方法,因为它们返回值和对象。我从这里开始,并没有改变模块的注册方式,也没有给出一个沙盒实例。警告注释多于实际代码=]。点击转换成ajax调用是不好的design@Raynos我认为这是一个输入错误,最初是ajax:function()。。。当然,我可能弄错了。下面可以找到一个非常简单的实现,它非常接近于本文的内容:您的示例有点不同,因为它在其中使用jQuery,但它的工作效率不高。谢谢