addCallListener (example 3, custom function)
JavaScript
window.addCallListener = function(func, callback){
var callNumber = 0;
return function(){
var args = [].slice.call(arguments);
var result;
try {
result = func.apply(this, arguments);
callNumber++;
} catch (e) {
callback(e, args, this, callNumber);
throw e;
}
callback(result, args, this, callNumber);
return result;
}
}
var logSomething = function(something){
console.log(something);
}
logSomething = addCallListener(logSomething , function(result, args, self, callNumber){
console.log('logSomething has been called. \n\
Result is ', result, '.\n\
Arguments are', args, '.\n \
Self is ', self, '. \n\
Number of calls ', callNumber, '.'
);
});
logSomething ('fuck yeah!');
logSomething ('It\'s gonna be legen...');
logSomething ('...Wait for it...');
logSomething ('...dary');