EventEmitter

xiaoxiao2021-02-28  57

实现一个EventEmitter类

class EventEmitter { constructor() { this._events = {} } on(eventName,callback) { let callbacks = eventName in this._events ? this._events[eventName] : []; callbacks.push(callback) this._events[eventName] = callbacks } emit(eventName,...args) { const callbacks = this._events[eventName] callbacks.map(cb => { cb(...args) }) } off(eventName, callback) { if (!eventName in this._events) return let callbacks = this._events[eventName] let index = callbacks.indexOf(callback) callbacks.splice(index, 1) } } const emitter = new EventEmitter() const sayHi = (name) => console.log(`Hello ${name}`) emitter.on('hi', sayHi) emitter.emit('hi', 'nwd') emitter.off('hi', sayHi) emitter.emit('hi', '您好') 作者:李赫feixuan 链接:https://juejin.im/post/5b39e42be51d4558c329ebc5 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
转载请注明原文地址: https://www.6miu.com/read-2622694.html

最新回复(0)