Подтвердить что ты не робот

Добавить в функцию javascript

У меня есть функция, которую я не могу изменить:

function addToMe() { doStuff(); }

Могу ли я добавить к этой функции? Очевидно, что этот синтаксис ужасно ошибочен, но это общая идея...

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

Ответ 1

Вы можете сохранить ссылку на исходную функцию, а затем переопределить ее с помощью функции, которая возвращает исходную, и добавляет желаемые функции:

var originalFn = addToMe;

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

Вы можете сделать это, потому что JavaScript functions first-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