读Javascript: The Definitive Guide这本书的时候发现一个有意思的代码,可以在调用方法的之前和之后注入一些回调或者代码,分享给大家:
// Define a method.
function addBy10(val) {
return val + 10;
}
var obj = { 'myMethod': addBy10 };
obj.myMethod(5);
// “monkey-patching.”
function trace(o, m){
var original = o[m];
o[m] = function() {
console.log(new Date(), "Entering", m);
var result = original.apply(this, arguments);
console.log(new Date(), "Exiting:", m);
return result;
};
}
// Method injection
trace(obj, 'myMethod');
// Call the method again
obj.myMethod(5);
// 部分代码取自:Javascript Definitive Guide的8.7.3 The call() and apply() Methods