开发者

Add to a javascript function

开发者 https://www.devze.com 2022-12-10 04:14 出处:网络
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...

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

精彩评论

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