Skip to content

Instantly share code, notes, and snippets.

@formula1
Created May 27, 2015 17:10
Show Gist options
  • Save formula1/b420240749231af1c40d to your computer and use it in GitHub Desktop.
Save formula1/b420240749231af1c40d to your computer and use it in GitHub Desktop.
Simple Event Emitter
function EventEmitter(){
this.events = {};
}
EventEmitter.prototype.on = function(event,fn){
if(!(event in this.events)) this.events[event] = [];
this.events[event].push(fn);
}
EventEmitter.prototype.emit = function(event){
if(!event in this.events) return;
var args = [];
for(var i=0,l=arguments.length;i<l;i++) args[i] = arguments[i];
var listeners = this.events[event];
for(var i=0,l=listeners.length;i<l;i++){
listeners[i].apply(listeners[i],args);
}
}
EventEmitter.prototype.off = function(event,fn){
if(!(event in this.events)) return;
if(!fn){
delete this.events[event];
}
var listeners = this.events[event];
for(var i=0,l=listeners.length;i<l;i++){
if(fn === listeners[i]){
listeners.splice(i,1);
return;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment