我想创建自己的信号发射器或回调存储,随便叫什么。
到目前为止,这是我提出的内容:
var DetonationCallback = function detonationCallback() {
detonationCallback.callbacks = [];
detonationCallback.add = function(callback) {
detonationCallback.callbacks.push(callback);
};
for(var i = 0; i < detonationCallback.callbacks.length; ++i) {
callback[i](arguments);
}
};
基本上我现在有两个我无法解决的问题。第一个是我该如何移动
detonationCallback.callbacks = [];
detonationCallback.add = function(callback) {
detonationCallback.callbacks.push(callback);
};
功能之外?另一个问题是,如何将以相同顺序传递给
detonationCallback
的所有参数传递给callback[i]
?将不胜感激任何答案。
附加信息:完成类型的实现后,我想按以下方式使用它:
var callback = new DetonationCallback();
function f1() {
}
function f2(firstArg, secondArg) {
}
callback.add(f1);
callback.add(f2);
callback();
最佳答案
首先,将detonationCallback设为Object
var detonationCallbacks = {};
detonationCallbacks.callbacks = [];
detonationCallback.clear = function() {
detonationCallback.callbacks = [];
}
detonationCallback.add = function(callback) {
detonationCallback.callbacks.push(callback);
};
其次,使您的起爆功能在detonationCallback中
detonationCallback.detonate = function() {
for(var i = 0; i < detonationCallback.callbacks.length; ++i) {
this.callback[i](arguments);
}
};
如果您想要/需要使用new,只需为此创建一个对象原型