На данный вопрос уже ответили:
По заданию: Добавьте всем функциям в прототип метод 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);
Потому что параметры для суммирующей функции function f(a, b)
появляются только во втором вызове. То есть в вызове анонимной функции, возвращенной из defer
.
Контекст во втором вызове, сохраненный в context
, - это window
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При вызове маршрута: routerpost('/', upload, controller
Подскажите, как переформанировать дату публикации получаемую с сервера в ISO формат
создаю игру на Canvas/JavascriptЕсть кнопка звука при клике должен меняться иконка звука (вкл \ выкл)
Использую Quasar Framework, конкретно проблема с компонентом Autocomplete: