var EventEmitter = { _events: {}, dispatch: function (event, data) { if (!this._events[event]) { // 没有监听事件 return; } for(var cb of this._events[event].values()) { cb(data); } //let arr = this._events[event].values(); //arr.forEach(function (cb) { // cb(data); //}) }, subscribe: function (event, source, callback) { // 创建一个新事件数组 if (!this._events[event]) { this._events[event] = new Map(); } this._events[event].set(source, callback); }, unsubscribe: function (event, source) { if(this._events && this._events[event]) { this._events[event].delete(source); } } };