Декорирование вызова функции

160
04 декабря 2018, 03:20

Извиняюсь за тавтологию заранее.Но в этом примере в строке:

log.push([].slice.call(arguments));

мы копируем с помощью метода slice контекст из нескольких аргументов, которые принимает основная функция work в пустой массив,а далее этот новый массив добавляем в массив log с помощью метода push?

Сам пример:Создайте декоратор makeLogging(func, log), для функции func возвращающий обёртку, которая при каждом вызове добавляет её аргументы в массив log.Допускается func с любым набором аргументов.

function work(a, b) {
  alert( a + b ); // work - произвольная функция
}
function makeLogging(f, log) {
  function wrapper() {
      log.push([].slice.call(arguments));
      return f.apply(this, arguments);
    }
  return wrapper;
}
var log = [];
work = makeLogging(work, log);
work(1, 2); // 3
work(4, 5); // 9
for (var i = 0; i < log.length; i++) {
  var args = log[i]; // массив из аргументов i-го вызова
  alert( 'Лог:' + args.join() ); // "Лог:1,2", "Лог:4,5"
}
READ ALSO
Остановка функции JavaSript

Остановка функции JavaSript

Нужно сделать Ajax запрос только один раз и если пользователь прокрутит документ на 100pxСейчас делается постоянно при прокрутке на 1px

118
Поместить текст в Ace редактор

Поместить текст в Ace редактор

Нашел markdown редактор на js, построенный на базе текстового редактора Ace[GitHub]Проблема в том, что у меня не получается поместить текст в редактор...

156
Google Maps Info Windows (попап текст)

Google Maps Info Windows (попап текст)

Нужно добавить текст по клику к каждому маркеру, но не пойму, как это сделатьПодскажите, пожалуйста, или покажите на примере

150