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()); // иштейт