1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| class EventCenter{ let handlers = {} addEventListener(type, handler) { if (!this.handlers[type]) { this.handlers[type] = [] } this.handlers[type].push(handler) } dispatchEvent(type, params) { if (!this.handlers[type]) { return new Error('该事件未注册') } this.handlers[type].forEach(handler => { handler(...params) }) } removeEventListener(type, handler) { if (!this.handlers[type]) { return new Error('事件无效') } if (!handler) { delete this.handlers[type] } else { const index = this.handlers[type].findIndex(el => el === handler) if (index === -1) { return new Error('无该绑定事件') } this.handlers[type].splice(index, 1) if (this.handlers[type].length === 0) { delete this.handlers[type] } } } }
|