А я бы сделал так:
window.callEvent = function(func, callback){
return function(){
var args = Array.prototype.slice.call(arguments);
var result;
try {
result = func.apply(this, arguments);
} catch (e) {
if(callback(e, args, this) !== false) throw e;
}
callback(result, args, this);
return result;
}
}
FINoM,
Вам бы почитать про
Proxy. v8 и SpiderMonkey вполне себе поддерживают.
П.С. Вообще где то на хабре это уже было