Konteksti kaotamine meetodi koodis OOP-s JavaScriptis
Klassi meetodi lähtekoodi kasutamisel võib kontekst kaduda. Vaatame näidet. Olgem meil järgmine klass:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Loome selle klassi objekti:
let user = new User('john');
Kirjutame meetodi koodi muutujasse:
let func = user.getName;
Meetodi muutujasse kirjutamise hetkel
kontekst kaob. Nüüd ei osuta this
meetodi koodi sees enam
klassi objektile. Kontrollime,
käivitame oma funktsiooni:
console.log(func()); // viga
Probleemi lahendamiseks saab siduda
konteksti funktsiooniga, näiteks
läbi bind:
func = func.bind(user);
console.log(func()); // töötab