添加到javascript函数

时间:2009-11-02 02:48:41

标签: javascript function

我有一个我无法修改的功能:

function addToMe() { doStuff(); }

我可以添加到此功能吗? 显然这种语法非常错误,但这是一般的想法......

function addToMe() { addToMe() + doOtherStuff(); }

1 个答案:

答案 0 :(得分:41)

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

var originalFn = addToMe;

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

您可以这样做,因为JavaScript functionsfirst-class个对象。

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

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