Javascript 模块模式回调实现

Javascript 模块模式回调实现,javascript,module,callback,Javascript,Module,Callback,我正在使用HTML/CSS/JavaScript重写一个简单的应用程序,该程序使用间隔创建带有图像的动画,并且有一组按钮控制这些动画 它正在扩展并变得非常混乱,通过jQuery通过一个javascript脚本文件将逻辑与DOM操作混合在一起 所以我决定使用模块设计模式 根据我对应用程序的描述,模块的回调实现是否存在问题 还是模块实现 在本例中,声明私有变量并通过公共api访问它们的最佳方法是什么?能手和二传手?它们真的有必要吗?我想写可读的代码,但我不想过度设计 (function($) {

我正在使用HTML/CSS/JavaScript重写一个简单的应用程序,该程序使用间隔创建带有图像的动画,并且有一组按钮控制这些动画

它正在扩展并变得非常混乱,通过jQuery通过一个javascript脚本文件将逻辑与DOM操作混合在一起

所以我决定使用模块设计模式

根据我对应用程序的描述,模块的回调实现是否存在问题

还是模块实现

在本例中,声明私有变量并通过公共api访问它们的最佳方法是什么?能手和二传手?它们真的有必要吗?我想写可读的代码,但我不想过度设计

(function($) {

  $.Module = function(options){
    var module = {
      options: $.extend({
        callbacks: {
          start: false
        }
      }, options),
      start: function(callback){
        //console.log('private start method');
        if(typeof callback === "function") {
            callback();
        }
      }
    }

    // public api
    return {
      start: function(){
        //console.log('public start method');
        module.start(module.options.callbacks.start);
      }
    }
  }

}($));

var myModule = $.Module({
  callbacks: {
    start: function(){
      console.log('start callback!');
    }
  }
})

myModule.start();
这是一个样本

只是因为它对我来说似乎是可行的,而且我也见过其他实现,它们的代码如下所示:

callback: function(method) {
    if(typeof method === "function") {
        var args = [];

        for(var x = 1; x <= arguments.length; x++) {
            if(arguments[x]) {
                args.push(arguments[x]);
            }
        }

        method.apply(this, args);
    }
},
回调:函数(方法){
如果(方法类型==“函数”){
var args=[];
对于(var x=1;x
模块的回调实现是否有问题

如果这是你想要的就不要了

还是模块实现

options
属性的实例化可能应该使用,当前的实例化正在覆盖完整的
回调
对象

我不确定我找到的另一段代码应该做什么。它是用来向回调函数返回数据的吗

是的。它确实支持多个参数,使用

…我在实例化模块时注册的

不,它与注册无关。它将调用作为参数传递给此
回调
函数的
方法

使用此代码将使您不再需要每次都进行
typeof
检查

helper.callback(this.options.callbacks.start, /* optional arguments */)
// instead of
if (typeof this.options.callbacks.start == "function")
    this.options.callbacks.start(/* arguments */)

但是,在您认为需要此帮助程序之前,您将不需要此帮助程序。

不确定您所说的“然而,在您认为需要此帮助程序之前,您将不需要此帮助程序”!您不需要此帮助程序功能。直到您意识到出于某种原因想要使用它。