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ę:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
  getName() {
    return this.#name;
  }
}

Sukurkime šios klasės objektą:

javascriptlet user = new User('john');

Įrašykime metodo kodą į kintamąjį:

javascriptlet 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ą:

javascriptconsole.log(func()); // klaida

Problemai spręsti galima pririšti kontekstą prie funkcijos, pavyzdžiui, per bind:

javascriptfunc = func.bind(user);
console.log(func()); // veikia