添加到javascript函数

添加到javascript函数,javascript,function,Javascript,Function,我有一个无法修改的函数: function addToMe() { doStuff(); } 我可以添加到这个函数中吗?显然,这种语法是非常错误的,但它的总体思想 您可以存储对原始函数的引用,然后使用调用原始函数的函数覆盖它,并添加所需的功能: var originalFn = addToMe; addToMe = function () { originalFn(); // call the original function // other stuff }; 您可以这样做,因

我有一个无法修改的函数:

function addToMe() { doStuff(); }
我可以添加到这个函数中吗?显然,这种语法是非常错误的,但它的总体思想


您可以存储对原始函数的引用,然后使用调用原始函数的函数覆盖它,并添加所需的功能:

var originalFn = addToMe;

addToMe = function () {
  originalFn(); // call the original function
  // other stuff
};
您可以这样做,因为JavaScript是对象

编辑:如果函数收到参数,则应使用将其传递给原始函数:

您还可以使用带有参数的自动执行函数表达式来存储原始函数的引用,我认为它更简洁一些:

addToMe = (function (originalFn) {
  return function () {
    originalFn.apply(originalFn, arguments); // call the original function
    // other stuff
  };
})(addToMe); // pass the reference of the original function

是的,这可能是最简单的解决方案!您应该在originalFn之前添加第二个return语句!
addToMe = function () {
  originalFn.apply(this, arguments); // preserve the arguments
  // other stuff
};
addToMe = (function (originalFn) {
  return function () {
    originalFn.apply(originalFn, arguments); // call the original function
    // other stuff
  };
})(addToMe); // pass the reference of the original function