Страта кантэксту ў кодзе метаду ў ААП у 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()); // працуе