Задать вопрос
@rolandDiskeyn

Почему контекст вызова разный?

Почему в данном случае this=window
Function.prototype.defer = function(ms) {
  // let f = this;
  return function(...args) {
    setTimeout(() => console.log(this), ms, ...args)
  }
};
function f(a, b) {
  console.log( a + b );
}
f.defer(2000)(1, 4);


А в этом случае this=f
Function.prototype.defer = function(ms) {
  // let f = this;
  return (...args) => {
    setTimeout(() => console.log(this), ms, ...args)
  }
};
function f(a, b) {
  console.log( a + b );
}
f.defer(2000)(1, 4);

Заранее извиняюсь за тупость
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
neuotq
@neuotq
Прокрастинация
Читаем документацию :
Стрелочные функции не содержат собственный контекст this, а используют значение this окружающего контекста.
Ответ написан
@r_mustang
Обычная функция добавляет свой контекст, стрелочная функция на контекст не влияет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы