⊗jsOpAdMCL 43 of 60 menu

Kontekstin menettäminen metodikoodissa OOP:ssa JavaScriptissä

Kun luokan metodin lähdekoodia käytetään, konteksti voi kadota. Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava luokka:

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

Luodaan objekti tästä luokasta:

let user = new User('john');

Kirjoitetaan metodin koodi muuttujaan:

let func = user.getName;

Hetkellä, jolloin metodi kirjoitetaan muuttujaan, konteksti katosi. Nyt this metodikoodin sisällä ei viittaa luokan objektiin. Tarkistetaan, kutsukaamme meidän funktiota:

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

Ongelman ratkaisemiseksi voimme sitoa kontekstin funktioon, esimerkiksi käyttämällä bind:ia:

func = func.bind(user); console.log(func()); // toimii
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää