Humbja e kontekstit në kodin e metodës në OOP në JavaScript

Kur përdoret kodi burimor i metodës së klasës, konteksti mund të humbasë. Le të shohim një shembull. Le të themi se kemi klasën e mëposhtme:

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

Le të krijojmë një objekt të kësaj klase:

javascriptlet user = new User('john');

Le të regjistrojmë kodin e metodës në një ndryshore:

javascriptlet func = user.getName;

Në momentin e regjistrimit të metodës në ndryshore konteksti u humb. Tani this brenda kodit të metodës nuk do të tregojë më te objekti i klasës. Le të kontrollojmë, le ta thirrim funksionin tonë:

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

Për zgjidhjen e problemit mund të lidhim kontekstin me funksionin, për shembull, përmes bind:

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