⊗jsOpAdMCL 43 of 60 menu

Utrata kontekstu w kodzie metody w OOP w JavaScript

Przy użyciu oryginalnego kodu metody klasy kontekst może zostać utracony. Spójrzmy na przykład. Załóżmy, że mamy następującą klasę:

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

Stwórzmy obiekt tej klasy:

let user = new User('john');

Zapiszmy kod metody w zmiennej:

let func = user.getName;

W momencie zapisania metody do zmiennej kontekst został utracony. Teraz this wewnątrz kodu metody nie będzie wskazywać na obiekt klasy. Sprawdźmy, wywołajmy naszą funkcję:

console.log(func()); // błąd

Aby rozwiązać problem, można powiązać kontekst z funkcją, na przykład przez bind:

func = func.bind(user); console.log(func()); // działa
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć