⊗jsOpAdMCL 43 of 60 menu

Απώλεια περιβάλλοντος στον κώδικα μεθόδου στην OOP σε JavaScript

Κατά τη χρήση του πηγαίου κώδικα μιας μεθόδου κλάσης, το περιβάλλον (context) μπορεί να χαθεί. Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη κλάση:

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

Ας δημιουργήσουμε ένα αντικείμενο αυτής της κλάσης:

let user = new User('john');

Ας αποθηκεύσουμε τον κώδικα της μεθόδου σε μια μεταβλητή:

let func = user.getName;

Τη στιγμή που αποθηκεύουμε τη μέθοδο στη μεταβλητή, το περιβάλλον χάθηκε. Τώρα το this μέσα στον κώδικα της μεθόδου δεν θα δείχνει προς το αντικείμενο της κλάσης. Ας ελέγξουμε, ας καλέσουμε τη συνάρτησή μας:

console.log(func()); // σφάλμα

Για την επίλυση του προβλήματος, μπορούμε να δέσουμε το περιβάλλον στη συνάρτηση, για παράδειγμα, μέσω του bind:

func = func.bind(user); console.log(func()); // λειτουργεί
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη