JavaScript-те ООП-те әдіс кодының контексті жоғалтуы
Сынып әдісінің бастапқы кодын қолданған кезде контекст жоғалуы мүмкін. Мысал арқылы қарастырайық. Бізде келесі сынып бар делік:
javascriptclass User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Осы сыныптың нысанын жасайық:
javascriptlet user = new User('john');
Әдіс кодын айнымалыға жазайық:
javascriptlet func = user.getName;
Әдіс айнымалыға жазылған сәтте
контекст жоғалды. Енді әдіс кодының ішіндегі this
сынып нысанына сілтемейді.
Функциямызды шақырып, тексерейік:
javascriptconsole.log(func()); // қате
Мәселені шешу үшін функцияға
контекстті байлауға болады, мысалы,
bind
арқылы:
javascriptfunc = func.bind(user);
console.log(func()); // жұмыс істейді