function delay(f, ms) {
return function() {
setTimeout(() => f.apply(this, arguments), ms);
};
}
let f1000 = delay(alert, 1000);
f1000("test"); // shows "test" after 1000ms
Есть вот такая функция, которая принимает коллбэк и инвокает его через некоторое количество ms. Само выполнение функции осуществляется с помощью apply, и в самой статье (
https://javascript.info/call-apply-decorators) говориться:
Please note how an arrow function is used here. As we know, arrow functions do not have own this and arguments, so f.apply(this, arguments) takes this and arguments from the wrapper.
Про arguments все понятно что этот объект берется из wrappera, но зачем передавать this, если он возвращает window? Функцию можно вызвать без apply & this через spread оператор, но в статье внимание акцентируется на this.