Kupoteza Muktadha katika Msimbo wa Njia katika OOP katika JavaScript
Wakati wa kutumia msimbo asilia wa njia ya darasa muktadha unaweza kupotea. Wacha tuangalie kwa mfano. Tuwapo tuna darasa lifuatalo:
class User {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Tutengeneze kitu cha darasa hili:
let user = new User('john');
Tuandike msimbo wa njia kwenye kutofautisha:
let func = user.getName;
Wakati wa kuandika njia kwenye kutofautisha
muktadha ulipotea. Sasa this
ndani ya msimbo wa njia hautaonesha
kwenye kitu cha darasa. Tuangalie, tuitaje
kitendo chetu:
console.log(func()); // hitilafu
Kutatua tatizo unaweza kufungia
muktadha kwenye kitendo, kwa mfano,
kupitia bind:
func = func.bind(user);
console.log(func()); // inafanya kazi