Konteksta zudums metodes kodā OOP JavaScript
Izmantojot klases metodes pirmkodu, var pazust konteksts. Apskatīsim piemērā. Pieņemsim, ka mums ir šāda klase:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Izveidosim šīs klases objektu:
let user = new User('john');
Ierakstīsim metodes kodu mainīgajā:
let func = user.getName;
Brīdī, kad metode tika ierakstīta mainīgajā,
konteksts tika zaudēts. Tagad this
metodes koda iekšienē norādīs
uz klases objektu. Pārbaudīsim, izsauksim
mūsu funkciju:
console.log(func()); // kļūda
Lai atrisinātu problēmu, var piesiet
kontekstu funkcijai, piemēram,
izmantojot bind:
func = func.bind(user);
console.log(func()); // strādā