Javascript 模块模式回调实现
我正在使用HTML/CSS/JavaScript重写一个简单的应用程序,该程序使用间隔创建带有图像的动画,并且有一组按钮控制这些动画 它正在扩展并变得非常混乱,通过jQuery通过一个javascript脚本文件将逻辑与DOM操作混合在一起 所以我决定使用模块设计模式 根据我对应用程序的描述,模块的回调实现是否存在问题 还是模块实现 在本例中,声明私有变量并通过公共api访问它们的最佳方法是什么?能手和二传手?它们真的有必要吗?我想写可读的代码,但我不想过度设计Javascript 模块模式回调实现,javascript,module,callback,Javascript,Module,Callback,我正在使用HTML/CSS/JavaScript重写一个简单的应用程序,该程序使用间隔创建带有图像的动画,并且有一组按钮控制这些动画 它正在扩展并变得非常混乱,通过jQuery通过一个javascript脚本文件将逻辑与DOM操作混合在一起 所以我决定使用模块设计模式 根据我对应用程序的描述,模块的回调实现是否存在问题 还是模块实现 在本例中,声明私有变量并通过公共api访问它们的最佳方法是什么?能手和二传手?它们真的有必要吗?我想写可读的代码,但我不想过度设计 (function($) {
(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 */)
但是,在您认为需要此帮助程序之前,您将不需要此帮助程序。不确定您所说的“然而,在您认为需要此帮助程序之前,您将不需要此帮助程序”!您不需要此帮助程序功能。直到您意识到出于某种原因想要使用它。