Прохожу тему Apply, call и не могу понять, зачем в функции декораторе spy используется вызов функции func c привязкой контекста. func.apply(this,args). Ведь можно написать просто func(...args) и все будет работать. Можете проверить. п.с Я знаю для чего используют привязку контектста, когда передается метод объекта. Но здесь же просто функция.
function work(a, b) {
console.log (a + b ); // произвольная функция или метод
}
function spy(func) {
function wrapper(...args) {
wrapper.calls.push(args);
return func.apply(this, args); // МЕСТО О КОТОРОМ Я СПРАШИВАЮ. Если заменить на func(...args) ничего не поменяется. От того и вопрос, зачем здесь Apply.
}
wrapper.calls = [];
return wrapper;
}
work = spy(work);
work(1, 2);
work(4, 5); // 9
for (let args of work.calls) {
console.log( 'call:' + args.join() );
}