测试示例
const add = (a, b) => console.log(a + b);
const log = (...args) => console.log(...args);
const event = new myEventBus();
event.on('add', add);
event.on('log', log);
event.emit('add', 1, 2);
event.emit('log', 'hi~');
主类
class myEventBus {
constructor() {
this.events = {};
}
emit(event, ...args) {
console.log('args', args);
const fns = this.events[event];
if (!fns) {
console.warn('没有此事件');
return this;
}
fns.forEach((fn) => fn.call(this, ...args));
return this;
}
on(event, fn) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(fn);
return this;
}
}