Closed zhouzhongyuan closed 7 years ago
Event模块(events.EventEmitter)是一个简单的事件监听器模式的实现。
一个非常简单的事件监听器模式的实现
var EventEmitter = function () { this.events = {}; //事件回调存储的位置 }; //当你写了App.on('NO_ROUTE',() =>{...}),回调函数会被push到this.events.NO_ROUTE的数组中去 EventEmitter.prototype.on = function (event, listener) { if (typeof this.events[event] !== 'object') { this.events[event] = []; } this.events[event].push(listener); }; //当你写了APP.emit('NO_ROUTE'), 会执行this.events.NO_ROUTE数组中的函数 EventEmitter.prototype.emit = function (event) { var i, listeners, length, args = [].slice.call(arguments, 1); if (typeof this.events[event] === 'object') { listeners = this.events[event].slice(); length = listeners.length; for (i = 0; i < length; i++) { listeners[i].apply(this, args); } } };
EventEmitter是什么?
什么是“事件监听器模式”?
一个非常简单的事件监听器模式的实现