Контексти гумшуда дар рамзи усули ООП дар JavaScript

Ҳангоми истифодаи рамзи аслии усули синф контекст гум карда метавонад. Биёед ба мисол назар кунем. Фарз мекунем, ки мо синфи зеринро дорем:

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

Объекти ин синфро эҷод мекунем:

javascriptlet user = new User('john');

Рамзи усулро дар тағирёбанда сабт мекунем:

javascriptlet func = user.getName;

Дар лаҳзаи сабти усул дар тағирёбанда контекст гум шуд. Ҳоло this дар дохили рамзи усул ба объекти синф ишора намекунад. Санҷем, функсияи худро даъват кунем:

javascriptconsole.log(func()); // хатогӣ

Барои ҳалли мушкилот, шумо метавонед контекстро ба функсия алоқаманд кунед, масалан, тавассути bind:

javascriptfunc = func.bind(user);
console.log(func()); // кор мекунад