javascriptalias-method

Alias method chain in JavaScript?


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?


Solution

  • 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