EventEmitter
EventEmitter copied to clipboard
proto.off 删除对应的监听函数后为什么还要把null补进去
https://github.com/mqyqingfeng/EventEmitter/blob/adef06ac9eae936947252917cb5a6e992e69a0fd/eventEmitter.js#L100
splice
从第三个参数开始不是要进行添加元素的操作么?为什么删除对应的事件后,还要把null
添加进去,不太理解
应该用不着
主要用在这里
proto.emit = function(eventName, args) {
var listeners = this.__events[eventName];
if (!listeners) return;
for (var i = 0; i < listeners.length; i++) {
var listener = listeners[i];
if (listener) {
listener.listener.apply(this, args || []);
if (listener.once) {
---> this.off(eventName, listener.listener)
}
}
}
return this;
};
如果不填充一个null,而是直接删除的话,那下一次循环的时候会少执行一个回调