EventEmitter
EventEmitter copied to clipboard
重复添加事件问题
您好,我发现那个indexOf有点问题,不能避免重复添加事件
function indexOf(array, item) {
if (array.indexOf) {
return array.indexOf(item);
} else {
var result = -1;
for (var i = 0, len = array.length; i < len; i++) {
if (array[i] === item) {
result = i;
break;
}
}
return result;
}
}
在添加事件的时候,使用indexOf(listeners, listener) === -1判断listeners没有listener才添加,但是listener可能为object,也可能为function,所以我修改为以下
function indexOf (array, item) {
var result = -1
item = typeof item === 'object'
? item.listener
: item
for (var i = 0, len = array.length; i < len; i++) {
if (array[i].listener === item) {
result = i
break
}
}
return result
}
不知道分析的对不对?
@xxxgitone 啊,确实有问题,感谢指出~ o( ̄▽ ̄)d 欢迎发起一个 Pull requrest ,我会 merge 的~