Skip to content

Instantly share code, notes, and snippets.

@brigand
Last active August 29, 2015 14:00
Show Gist options
  • Save brigand/11102476 to your computer and use it in GitHub Desktop.
Save brigand/11102476 to your computer and use it in GitHub Desktop.
function Events() {
var self = this;
self.events = {};
self.on = function(event, callback, context) {
self.events.hasOwnProperty(event) || (self.events[event] = []);
self.events[event].push([callback, context]);
};
self.emit = function(event) {
var tail = Array.prototype.slice.call(arguments, 1),
callbacks = self.events[event];
if (callbacks) {
for (var i = 0, l = callbacks.length; i < l; i++) {
var callback = callbacks[i][0],
context = callbacks[i][1] === undefined ? self : callbacks[i][1];
callback.apply(context, tail);
}
}
};
self.off = function(event, callback) {
self.events[event] = self.events[event].filter(function(x){
return x[0] !== callback;
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment