Передача аргументов call, apply


  function work(a, b) {
    alert( a + b ); 
  }
  

  function spy(func) {
      return function (...args) {

      return func.apply(null, ...args);// c call рботает
    }
 }
  work = spy(work);
  
  work(1, 2); 
  

Второй параметр у apply должен быть массив! ...args ведь является массивом, почему тогда ошибка? Если использовать call - код работает.


Ответы (1 шт):

Автор решения: Алексей Шиманский

args - массив, а ...args - распаковка массива на отдельные составляющие

let test = [1,2,3];

console.log(test);
console.log(...test);

→ Ссылка