OOP-də metod kodunda kontekstin itirilməsi JavaScript-də
Sinif metodunun orijinal kodundan istifadə edərkən kontekst itirilə bilər. Nümunəyə baxaq. Tutaq ki, aşağıdakı sinifimiz var:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Bu sinifin obyektini yaradaq:
let user = new User('john');
Metodun kodunu dəyişənə yazaq:
let func = user.getName;
Metodu dəyişənə yazdığımız an
kontekst itdi. İndi this
metodun kodu daxilində sinif
obyektini göstərməyəcək.
yoxlayaq, funksiyamızı çağıraq:
console.log(func()); // xəta
Problemi həll etmək üçün funksiyaya
konteksti bağlaya bilərsiniz, məsələn,
bind
vasitəsilə:
func = func.bind(user);
console.log(func()); // işləyir