⊗jsOpAdMCL 43 of 60 menu

Perdita del contesto nel codice del metodo in OOP in JavaScript

Quando si utilizza il codice sorgente di un metodo di classe, il contesto può andare perso. Vediamo un esempio. Supponiamo di avere la seguente classe:

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

Creiamo un oggetto di questa classe:

let user = new User('john');

Assegniamo il codice del metodo a una variabile:

let func = user.getName;

Nel momento in cui il metodo viene assegnato alla variabile, il contesto si è perso. Ora this all'interno del codice del metodo non punterà all'oggetto della classe. Verifichiamolo, chiamiamo la nostra funzione:

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

Per risolvere il problema, è possibile associare il contesto alla funzione, ad esempio, tramite bind:

func = func.bind(user); console.log(func()); // funziona
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta