rorono
12/1/2015 - 12:53 PM

observer.js

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");
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;