OOP-da JavaScript-de metod kodynda kontekstiň ýitirilmegi
Klase metodunyň çykgyt kodyny ulanylanda kontekst ýitirilip bilner. Mysal üçin seredeliň. Bizde aşakdaky klase bolsun:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Bu klase degişli obyekti döreteliň:
let user = new User('john');
Metod kodyny üýtgeýjä ýazalyň:
let func = user.getName;
Metod üýtgeýjä ýazylýan pursatda kontekst ýitirildi.
Indi this metod kodynyň içinde klase degişli obyekde görkezmez.
Funksiýamyzy çagyryp barlalyň:
console.log(func()); // Ýalňyşlyk
Meseleni çözmek üçin funksiýa bilen konteksti, mysal üçin,
bind arkaly,
birikdirip bolýar:
func = func.bind(user);
console.log(func()); // Işleýär