Humbja e kontekstit në kodin e metodës në OOP në JavaScript
Kur përdoret kodi burimor i metodës së klasës, konteksti mund të humbasë. Le të shohim një shembull. Le të themi se kemi klasën e mëposhtme:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Le të krijojmë një objekt të kësaj klase:
let user = new User('john');
Le të regjistrojmë kodin e metodës në një ndryshore:
let func = user.getName;
Në momentin e regjistrimit të metodës në ndryshore
konteksti u humb. Tani this
brenda kodit të metodës nuk do të tregojë
më te objekti i klasës. Le të kontrollojmë, le ta thirrim
funksionin tonë:
console.log(func()); // gabim
Për zgjidhjen e problemit mund të lidhim
kontekstin me funksionin, për shembull,
përmes bind:
func = func.bind(user);
console.log(func()); // punon