Объектга йўналтирилган дастурлашда метод кодни ишлатишда контекстни йўқотиш

Класс методнинг исходный кодни ишлатишда контекст йўқолиши мумкин. Келгила, мисолда кўрамиз. Фарз қилайлик, бизда куйидаги класс бор:

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()); // ишлайди