var InnerEventEmitter = { _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); } } };