Add to a javascript function

后端 未结 1 1096
忘掉有多难
忘掉有多难 2020-12-24 02:37

I have a function I can\'t modify:

function addToMe() { doStuff(); }

Can I add to this function? Obviously this syntax is terribly wron

相关标签:
1条回答
  • 2020-12-24 03:24

    You could store a reference to the original function, and then override it, with a function that calls back the original one, and adds the functionality you desire:

    var originalFn = addToMe;
    
    addToMe = function () {
      originalFn(); // call the original function
      // other stuff
    };
    

    You can do this because JavaScript functions are first-class objects.

    Edit: If your function receives arguments, you should use apply to pass them to the original function:

    addToMe = function () {
      originalFn.apply(this, arguments); // preserve the arguments
      // other stuff
    };
    

    You could also use an auto-executing function expression with an argument to store the reference of the original function, I think it is a little bit cleaner:

    addToMe = (function (originalFn) {
      return function () {
        originalFn.apply(originalFn, arguments); // call the original function
        // other stuff
      };
    })(addToMe); // pass the reference of the original function
    
    0 讨论(0)
提交回复
热议问题