0

我想创建一个接受设置的 javascript 对象,并使用单个 addListener 函数提供多个事件。例如addListener({success: callback,fail:callback})等。我希望我的要求很明确。

var myCustomObject=new MyCustomeObject({name:'anu', age:'30'});

myCustomObject.addListener({

success: function(e){ console.log(e)},
fail: function(ef){ console.log(ef)}

});
4

1 回答 1

1

您可以像这样实现自己的 EventEmitter:

const EventEmitter = function () {
    this.events = {};
};

然后你需要创建订阅函数:

EventEmitter.prototype.on = function (event, listener) {
if (typeof this.events[event] !== 'object') {
    this.events[event] = [];
}

this.events[event].push(listener);
};

当然还有发射功能:

EventEmitter.prototype.emit = function (event) {
let i, listeners, length, args = [].slice.call(arguments, 1);

if (typeof this.events[event] === 'object') {
    listeners = this.events[event].slice();
    length = listeners.length;

    for (i = 0; i < length; i++) {
        listeners[i].apply(this, args);
    }
}
};
于 2020-12-03T06:24:46.097 回答