1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| var Emitter=function(){ this._listeners={}; }; //注册事件 Emitter.prototype.on=function(eventName,callback){ var listeners=this._listeners[eventName]||[]; listeners.push(callback); this._listeners[eventName]=listeners; } //触发事件 Emitter.prototype.emit=function(eventName){ var args=Array.prototype.slice.apply(arguments).slice(1), listeners=this._listeners[eventName], self=this; if(!Array.isArray(listeners))return;
listeners.forEach(function(callback){ try{ callback.apply(this,args); }catch(e){ console.error(e); } }); } //实例 var emitter=new Emitter();
emitter.on('event',function(arg1,arg2){ console.log('get event',arg1,arg2); })
console.log('emit event'); emitter.emit('event','arg1','arg2');
|