⊗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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне