Gubitak konteksta u kodu metode u OOP-u u JavaScript-u
Kada se koristi izvorni kod metode klase, kontekst može biti izgubljen. Pogledajmo na primeru. Neka imamo sledeću klasu:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Kreirajmo objekat ove klase:
let user = new User('john');
Zapišimo kod metode u promenljivu:
let func = user.getName;
U trenutku upisivanja metode u promenljivu,
kontekst je i izgubljen. Sada this
unutar koda metode neće pokazivati
na objekat klase. Proverimo, pozovimo
našu funkciju:
console.log(func()); // greška
Za rešavanje problema može se povezati
kontekst sa funkcijom, na primer,
preko bind:
func = func.bind(user);
console.log(func()); // radi