开发者

Add to a javascript function

I have a function I can't modify:

func开发者_StackOverflow社区tion addToMe() { doStuff(); }

Can I add to this function? Obviously this syntax is terribly wrong but it's the general idea...

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


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜