Губење на контекст во кодот на методот во ООП во 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()); // работи