@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);

Заранее извиняюсь за тупость
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 2
neuotq
@neuotq
Прокрастинация
Читаем документацию :
Стрелочные функции не содержат собственный контекст this, а используют значение this окружающего контекста.
Ответ написан
@r_mustang
Обычная функция добавляет свой контекст, стрелочная функция на контекст не влияет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы