发布订阅模式
var EventEmiter = (function() {
var _events = {};
return {
on: function(eventName, fn) {
if (!eventName in this._events) {
this._events[eventName] = [];
}
this._events[eventName].push(fn);
},
emit: function(eventName) {
var _args = Array.prototype.slice.call(arguments, 1),
_events = this._events;
if (eventName in _events) {
_events[eventName].forEach(fn => {
fn.apply(_args);
});
}
},
off: function(eventName, fn) {
var _events = this._events,
index;
if (eventName in _events) {
if (fn) {
if(typeof fn === 'function') {
index = _events.indexOf(fn);
index>-1 && this._events[eventName].splice(index,1)
}
}else {
this._events[eventName] = [];
}
}
}
};
})();