Overriding a JavaScript function while referencing the original
javascript, overriding, user-defined-functions
Solution
You could do something like this:
var a = (function() {
var original_a = a;
if (condition) {
return function() {
new_code();
original_a();
}
} else {
return function() {
original_a();
other_new_code();
}
}
})();
Declaring `original_a` inside an anonymous function keeps it from cluttering the global namespace, but it's available in the inner functions.
Like Nerdmaster mentioned in the comments, be sure to include the `()` at the end. You want to call the outer function and store the result (one of the two inner functions) in `a`, not store the outer function itself in `a`.
Problem
I have a function, `a()`, that I want to override, but also have the original `a()` be performed in an order depending on the context. For example, sometimes when I'm generating a page I'll want to override like this: ``` function a() { new_code(); original_a(); } ``` and sometimes like this: ``` function a() { original_a(); other_new_code(); } ``` How do I get that `original_a()` from within the over-riding `a()`? Is it even possible? Please don't suggest alternatives to over-riding in this way, I know of many. I'm asking about this way specifically.