JavaScript-те ООП-те әдіс кодының контексті жоғалтуы
Сынып әдісінің бастапқы кодын қолданған кезде контекст жоғалуы мүмкін. Мысал арқылы қарастырайық. Бізде келесі сынып бар делік:
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()); // жұмыс істейді