class EventEmitter {
constructor() {
this.events = {};
}
on(event, cb) {
if(!this.events[event]) {
this.events[event] = [];
}
if (this.events[event].indexOf(cb) === -1) {
this.events[event].push(cb);
}
return this;
}
off(event, cb) {
if(!this.events[event]) {
return this;
}
if(!cb) {
this.events[event] = [];
}
let index = this.events[event].indexOf(event);
if(index > -1) {
this.events[event].splice(index, 1);
}
return this;
}
once(event, cb) {
var that = this;
function only() {
let args = Array.prototype.slice.call(arguments);
cb.apply(null, args);
this.off(event, only);
}
this.on(event, only);
return this;
}
emit(event, ...args) {
if(!this.events[event]) {
return this;
}
this.events[event].forEach(fn => {
fn.apply(null, args);
});
return this;
}
}
console