Губитак контекста у коду метода у ООП-у у JavaScript-у
При коришћењу изворног кода методе класе може се изгубити контекст. Хајде да погледамо на примеру. Нека имамо следећу класу:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Направимо објекат ове класе:
let user = new User('john');
Запишимо код метода у променљиву:
let func = user.getName;
У тренутку записивања методе у променљиву
контекст се и изгубио. Сада this
унутар кода метода неће показивати
на објекат класе. Проверимо, позовимо
нашу функцију:
console.log(func()); // грешка
За решавање проблема можемо везати
контекст за функцију, на пример,
преко bind:
func = func.bind(user);
console.log(func()); // ради