Как сделать так что-бы декоратор функции принимал пару аргументов?

Function.prototype.defer = function(ms){
  setTimeout(this, ms);
};

f.defer(1000)(1, 2);

Нужно чтобы декоратор принимал аргументы, которые находятся в разных скобках.


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

Автор решения: Dmitrii Sedov

Ну к примеру так. Верните функцию и далее вызовите её! Так же можете использовать стрелочную функцию чтобы не терять контекст:

Function.prototype.defer = function(ms){
  /*setTimeout(this, ms);*/
  console.log('parent ms', ms)
  return (a, b) => {
    console.log('second params', a, b);
    console.log('child ms from parent', ms);
  };
};

Function.defer(1000)(1, 2);

→ Ссылка
Автор решения: CoderMotive
Function.prototype.defer = function(ms) {
  let f = this;
  return function(...args) {
    setTimeout(() => f.apply(this, args), ms);
  }
};
→ Ссылка