⊗jsOpAdMCL 43 of 60 menu

Ztráta kontextu v kódu metody v OOP v JavaScriptu

Při použití zdrojového kódu metody třídy může dojít ke ztrátě kontextu. Podívejme se na příklad. Předpokládejme, že máme následující třídu:

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

Vytvořme objekt této třídy:

let user = new User('john');

Zapišme kód metody do proměnné:

let func = user.getName;

V okamžiku zápisu metody do proměnné došlo ke ztrátě kontextu. Nyní this uvnitř kódu metody nebude ukazovat na objekt třídy. Ověřme, zavolejme naši funkci:

console.log(func()); // chyba

K vyřešení problému lze navázat kontext na funkci, například pomocí bind:

func = func.bind(user); console.log(func()); // funguje
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout