По заданию:Добавьте всем функциям в прототип метод defer(ms), который возвращает обёртку, откладывающую вызов функции на ms миллисекунд. Понятно,только то что строка 3 привязывает контекст и аргументы к возвращаемой обёртке,которые берутся из замыкания
Непонятно почему в коде this сохраняется дважды?В строке (1) сохраняется задерживаемая функция,но почему тогда строку с аргументами context(2) перенесли в возвращаемою функцию?Почему не объявили эту переменную перед return?При этом во второй строке контекст вроде как равен underfined
Function.prototype.defer = function(ms) {
var f = this; // (1)
return function() {
var args = arguments,
context = this; // (2)
setTimeout(function() {
f.apply(context, args); // (3)
}, ms);
}
}
// проверка
function f(a, b) {
alert( a + b );
}
f.defer(1000)(1, 2);
Выполнить код