export class EventEmitter {
  constructor() {
    this._events = Object.create(null)
  }
  on(type, fn) {
    (this._events[type] || (this._events[type] = [])).push(fn)
  }
  emit(type, ...args) {
    (this._events[type] || []).forEach(fn => fn(...args))
  }
  off(type, fn) {
    if (!fn) this._events[type] = []
    else {
      const idx = (this._events[type] || []).indexOf(fn)
      if (idx > -1) this._events[type].splice(idx, 1)
    }
  }
}
