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()); // иштейт