var Events = Events || {};
(function () {
'use strict';
Events = {
// Bind an event to a `callback` function.
on: function (name, callback, context) {
// events={}, events[name]=[]
//this._events || (this._events = {});
this._events = this._events || {};
var events = this._events[name] || (this._events[name] = []);
//debugger();
events.push({
callback: callback,
context: context,
ctx: context || this
});
return this;
},
bind: function (name, callback, context) {
return this.on(name, callback, context);
},
trigger: function (name) {
if (!this._events) return this;
var args = [].slice.call(arguments, 1);
var events = this._events[name];
var i = -1,
l = events.length,
ev = null;
while (++i < l)(ev = events[i]).callback.apply(ev.ctx, args);
return this;
}
};
}());
var User = Object.create(Events);
User.bind("create", function (foo, bar) {
console.log(foo, bar);
});
User.trigger("create", "some", "data");
User.on('change:name', function () {
console.log(arguments);
});
User.trigger('change:name', 'testing1', 'testing2', {
more: 'test'
}, [1, 2, 3], function () {
console.log('call me');
}());