讀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