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:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
  getName() {
    return this.#name;
  }
}

Tutengeneze kitu cha darasa hili:

javascriptlet user = new User('john');

Tuandike msimbo wa njia kwenye kutofautisha:

javascriptlet 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:

javascriptconsole.log(func()); // hitilafu

Kutatua tatizo unaweza kufungia muktadha kwenye kitendo, kwa mfano, kupitia bind:

javascriptfunc = func.bind(user);
console.log(func()); // inafanya kazi