НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗jsOpAdMCL 43 of 60 menu

Потеря контекста в коде метода в ООП в JavaScript

При использовании исходного кода метода класса может потеряться контекст. Давайте посмотрим на примере. Пусть у нас есть следующий класс:

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

Создадим объект этого класса:

let user = new User('john');

Запишем код метода в переменную:

let func = user.getName;

В момент записи метода в переменную контекст и потерялся. Теперь this внутри кода метода не будет указывать на объект класса. Проверим, вызовем нашу функцию:

console.log(func()); // ошибка

Для решения проблемы можно привязать контекст к функции, например, через bind:

func = func.bind(user); console.log(func()); // работает
Русский
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить