Skip to content

Instantly share code, notes, and snippets.

@Yuffster
Created December 27, 2009 08:35
Show Gist options
  • Select an option

  • Save Yuffster/264206 to your computer and use it in GitHub Desktop.

Select an option

Save Yuffster/264206 to your computer and use it in GitHub Desktop.
//Listener class executes a logging function each time a method is called.
var Listener = new Class({
listenStack: {},
addListener: function(mth, fn) {
this.listenStack[mth] = this[mth];
this[mth] = function() {
var rtrn = this.listenStack[mth].attempt(arguments);
fn(rtrn, arguments);
return rtrn;
};
}
});
//Ridiculous example use...
var Adder = new Class({
addThings: function(var1, var2) { return var1+var2; }
});
Adder.implement(Listener);
var adder = new Adder();
adder.addListener('addThings', function(rtrn, args) {
console.log("addThings returned "+rtrn);
console.log(args);
});
adder.addThings(2, 3);
//Logs: addThings returned 5, [2, 3]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment