EventEmitter

实现一个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
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/sinat_17775997/article/details/80952514