Skip to content

Instantly share code, notes, and snippets.

@akkijp
Last active December 1, 2015 13:01
Show Gist options
  • Save akkijp/ffdc012a94c4f9ea6499 to your computer and use it in GitHub Desktop.
Save akkijp/ffdc012a94c4f9ea6499 to your computer and use it in GitHub Desktop.
function Observer(){
this.listeners = {};
}
Observer.prototype.on = function(event, func) {
if(!this.listeners[event]){
this.listeners[event] = [];
}
this.listeners[event].push(func);
};
Observer.prototype.off = function(event, func) {
var ref = this.listeners[event],
len = ref.length;
for(var i=0; i<len; i++){
var listener = ref[i];
if(listener === func){
ref.splice(i, 1);
}
}
};
Observer.prototype.trigger = function(event, func) {
var ref = this.listeners[event]
for(var i=0,len=ref.length; i<len; i++){
var listener = ref[i];
if(typeof listener === "function") listener();
}
};
module.exports = Observer;
var observer = require("./observer");
var observer = new observer();
observer.on("morning", function(){
console.log("Good morning 1");
});
observer.on("morning", function(){
console.log("Good morning 2");
});
observer.trigger("morning");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment