this: контекст обычного вызова метода
Значение this у обычной функции зависит от способа вызова, а не просто от места её объявления.
Назначение
Значение this у обычной функции зависит от способа вызова, а не просто от места её объявления.
Как это работает
Вызов object.method() обычно передаёт object как this. Если извлечь функцию в переменную, связь с объектом сама по себе не сохраняется. В строгом режиме простой вызов имеет this равным undefined.
Пример
'use strict';
function current(){return this;}
const holder={current};
console.assert(holder.current()===holder);
const detached=holder.current;
console.assert(detached()===undefined);
console.assert(detached.call(holder)===holder);
Что должно получиться
Один и тот же код получает разные значения this в зависимости от формы вызова. Строгий режим в примере делает отсутствие контекста явно наблюдаемым.
Граница применения и частая ошибка
Не передавайте метод как callback, ожидая автоматического сохранения владельца. Используйте обёртку или bind, если функция действительно зависит от this.
Самостоятельная проверка
Прочитайте this при вызове через объект и при отдельном вызове той же функции в строгом режиме. Затем восстановите контекст через call.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.