⊗jsOpAdMCL 43 of 60 menu

Förlust av kontext i metodkod i OOP i JavaScript

När man använder källkoden från en metod i en klass kan kontexten gå förlorad. Låt oss titta på ett exempel. Låt oss säga att vi har följande klass:

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

Låt oss skapa ett objekt av denna klass:

let user = new User('john');

Låt oss spara metodkoden i en variabel:

let func = user.getName;

I ögonblicket när metoden sparades i variabeln försvann kontexten. Nu kommer this inuti metodkoden inte att peka på klassobjektet. Låt oss kontrollera, låt oss anropa vår funktion:

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

För att lösa problemet kan man binda kontexten till funktionen, till exempel, via bind:

func = func.bind(user); console.log(func()); // fungerar
Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa