我想创建自己的信号发射器或回调存储,随便叫什么。

到目前为止,这是我提出的内容:

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,只需为此创建一个对象原型

09-09 21:53