zoxon
2/17/2018 - 2:00 PM

lazy event implementation

lazy event implementation

/* eventmodule */

/* Events */

var Events = {
  on: function(events, callback) {
    if(!this._observer) {
      this._observer = $({});
    }
    this._observer.bind(events, callback);
    return this;
  },
  trigger: function(events, params) {
    if(!this._observer) {
      return this;
    }
    this._observer.trigger(events, params);
    return this;
  }
};

/* impl */

var ConcreteCls = function(){
  // constructor I am.
};
ConcreteCls.prototype.on = Events.on;
ConcreteCls.prototype.trigger = Events.trigger;

/* do it */

var instance = new ConcreteCls;
instance.on('foo', function(e, params){ alert(params.val); });
instance.trigger('foo', { val: 'yes!' }); // yes!