Переопределение функции JavaScript при обращении к оригиналу - PullRequest
153 голосов
/ 17 ноября 2008

У меня есть функция a(), которую я хочу переопределить, но при этом оригинал a() должен выполняться в порядке, зависящем от контекста. Например, иногда, когда я генерирую страницу, я хочу переопределить это так:

function a() {
    new_code();
    original_a();
}

и иногда так:

function a() {
    original_a();
    other_new_code();
}

Как мне получить это original_a() из-за перегрузки a()? Это вообще возможно?

Пожалуйста, не предлагайте альтернатив для переезда таким образом, я знаю многих. Я специально спрашиваю об этом.

Ответы [ 11 ]

0 голосов
/ 22 ноября 2015

У меня был какой-то код, написанный кем-то другим, и я хотел добавить строку в функцию, которую я не смог найти в коде. Поэтому в качестве обходного пути я хотел переопределить это.

Ни одно из решений не сработало для меня.

Вот что сработало в моем случае:

if (typeof originalFunction === "undefined") {
    originalFunction = targetFunction;
    targetFunction = function(x, y) {
        //Your code
        originalFunction(a, b);
        //Your Code
    };  
}
...