Один интересный путь состоит в том, чтобы поддержать стек, и только объединиться, если список на стеке имеет то же число элементов, и иначе продвиньте список, пока Вы не заканчиваетесь элементы во входящем списке, и затем объединяете стек.
Вы можете сохранить ссылку на исходную функцию, а затем переопределить ее с помощью функции, которая вызывает исходную функцию и добавляет желаемую функциональность:
var originalFn = addToMe;
addToMe = function () {
originalFn(); // call the original function
// other stuff
};
Вы можете сделать это, потому что Функции JavaScript являются первоклассными объектами.
Изменить: Если ваша функция получает аргументы, вы должны использовать 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