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

Почему теряется контекст?

Всем привет. Скажите пожалуйста, почему здесь теряется контекст? Никак не могу догнать как это происходит внутри JS. Я понимаю, что мы передаем ссылку на функцию в foo(), но почему при вызове f() ( то-есть, obj.method() ),внутри foo(), this все равно не указывает на объект

let obj = {
    name: 'kek',
    method: function () {
        console.log(this);
    }
}

function foo(f) {
    f();
}

foo(obj.method);
  • Вопрос задан
  • 298 просмотров
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
let obj = {
    name: 'kek',
    method: function () {
        console.log(this);
    }
}

function foo(f) {
    f();
}

foo(obj.method.bind(obj));


or

let obj = {
    name: 'kek',
    method: function () {
        console.log(this);
    }
}

function foo(f) {
    f.call(obj);
}

foo(obj.method);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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