Объектга йўналтирилган дастурлашда метод кодни ишлатишда контекстни йўқотиш
Класс методнинг исходный кодни ишлатишда контекст йўқолиши мумкин. Келгила, мисолда кўрамиз. Фарз қилайлик, бизда куйидаги класс бор:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Ушбу классдан объект яратамиз:
let user = new User('john');
Метод кодни ўзгарувчига ёзамиз:
let func = user.getName;
Методни ўзгарувчига ёзиш жараёнида
контекст йўқолди. Энди this
метод кодни ичида объект классга
ишора қилмайди. Текширамиз, функциямизни
чақирамиз:
console.log(func()); // хато
Муаммони ҳал этиш учун контекстни
функцияга боглаш мумкин, масалан,
bind орқали:
func = func.bind(user);
console.log(func()); // ишлайди