@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
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);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
22 мая 2024, в 02:15
10000 руб./за проект
21 мая 2024, в 23:47
30000 руб./за проект