Konteksto praradimas metodo kode OOP JavaScripte
Naudojant pirminį klasės metodo kodą gali būti prarastas kontekstas. Pažiūrėkime pavyzdžiu. Tarkime, turime šią klasę:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Sukurkime šios klasės objektą:
let user = new User('john');
Įrašykime metodo kodą į kintamąjį:
let func = user.getName;
Įrašant metodą į kintamąjį
kontekstas ir buvo prarastas. Dabar this
metodo kode nebus nukreiptas
į klasės objektą. Patikrinkime, iškvikime
mūsų funkciją:
console.log(func()); // klaida
Problemai spręsti galima pririšti
kontekstą prie funkcijos, pavyzdžiui,
per bind:
func = func.bind(user);
console.log(func()); // veikia