In JavaScript, how could you create a new function with the same name as an existing function, while also preserving the original function so it could be called from within the new one?
+5
A:
You can pass the original function into an anonymous function which returns a replacement function which has access to the original function.
E.g.
parseInt = (function parseInt(original) {
return function (x) {
console.log("original would've returned " + original(x));
// just random 'new' functionality
return (x | 0) * 2;
};
}(parseInt));
Example output:
>> parseInt(10);
<< original would've returned 10
<< 20
Matt
2010-06-10 02:17:51
+1
A:
You want to implement function wrapping, check the following articles:
CMS
2010-06-10 02:18:45
A:
You could simply assign the old function to a variable with a different name:
var old_parseInt = parseInt;
function parseInt(s) {
return old_parseInt(s) + 1;
}
sth
2010-06-10 02:27:52