Skip to content

Instantly share code, notes, and snippets.

@kcarnold
Created July 16, 2012 21:44
Show Gist options
  • Save kcarnold/3125287 to your computer and use it in GitHub Desktop.
Save kcarnold/3125287 to your computer and use it in GitHub Desktop.
Trivial JavaScript event object system
var Event = (function() {
function Event(name) {
this.name = name;
this.listeners = [];
}
Event.prototype.when = function(context, callback) {
if (arguments.length === 1) {
callback = context;
context = null;
}
this.listeners.push({callback: callback, context: context});
};
Event.prototype.trigger = function() {
var i, len, listener;
for (i = 0, len = this.listeners.length; i < len; i++) {
listener = this.listeners[i];
listener.callback.apply(listener.context, arguments);
}
};
return Event;
})();
@kcarnold
Copy link
Author

amplify.js was almost what I wanted, but I needed events that could be scoped to a particular object.

Usage:

event = new Event();
event.when(function(a, b) { alert(a + b); });
event.when(object, object.method);
event.trigger('Hello ', 'world!');

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment