javascript 自定义事件
const event = (function() {
const events = {};
const on = function(type,func) {
events.hasOwnProperty(type) ? null : events[type] = [];
let arr = events[type];
let i = 0;
for (;i < arr.length; i++) {
if (func === arr[i]) {
return '该事件已存在';
}
}
events[type].push(func);
}
const remove = function(type,func) {
let arr = events[type] || [];
let i = 0;
for (;i < arr.length; i++) {
if (func === arr[i]) {
events[type][i] = null;
return true;
}
}
}
const fire = function(type,...params) {
let arr = events[type] || [];
let i = 0;
for (;i < arr.length; i++) {
if (arr[i] === null) {
events[type].splie(i,1);
}
events[type][i](...params);
}
}
return {
on,
remove,
fire
}
})()
event.on('time',function() {
console.log('timeout');
})
event.on('time',function() {
console.log('timeout....');
})
setTimeout(function() {
event.fire('time');
},500)