Javascript Object.defineProperty ()

Η μέθοδος JavaScript Object.defineProperty () προσθέτει ή τροποποιεί την υπάρχουσα ιδιότητα σε ένα αντικείμενο και επιστρέφει το αντικείμενο.

Η σύνταξη της defineProperty()μεθόδου είναι:

 Object.defineProperty(obj, prop, descriptor)

Η defineProperty()μέθοδος, ως στατική μέθοδος, καλείται χρησιμοποιώντας το Objectόνομα κλάσης.

defineProperty () Παράμετροι

Η defineProperty()μέθοδος περιλαμβάνει:

  • obj - Το αντικείμενο στο οποίο ορίζεται η ιδιότητα.
  • prop - Το όνομα ή Symbolτο ακίνητο που θα οριστεί ή τροποποιηθεί.
  • περιγραφή - Ο περιγραφέας για την ιδιότητα που ορίζεται ή τροποποιείται.

Οι περιγραφείς ιδιοτήτων που υπάρχουν σε αντικείμενα είναι δύο τύπων: περιγραφείς δεδομένων και περιγραφικοί βοηθοί. Μπορούν να έχουν τις ακόλουθες προαιρετικές ιδιότητες.

  • configurable
  • enumerable

Οι περιγραφείς δεδομένων μπορούν επίσης να έχουν:

  • value
  • writable

Οι περιγραφείς πρόσβασης μπορούν επίσης να έχουν:

  • get
  • set

Επιστροφή τιμής από defineProperty ()

  • Επιστρέφει το αντικείμενο που μεταβιβάστηκε στη συνάρτηση.

Σημείωση:

  • Από προεπιλογή, οι προστιθέμενες τιμές χρησιμοποιώντας Object.defineProperty()είναι αμετάβλητες και δεν είναι μετρήσιμες.
  • Αν ένας Περιγραφέας δεν έχει ούτε των value, writable, getκαι setκλειδιά, αντιμετωπίζεται ως Περιγραφέας δεδομένων. Αν ένας Περιγραφέας έχει δύο valueή writableκαι getή setτα πλήκτρα, μια εξαίρεση.

Παράδειγμα: Προσθήκη ιδιότητας δεδομένων σε αντικείμενο

 let obj = (); // with a data property descriptor Object.defineProperty(obj, "property1", ( value: 788, writable: true, enumerable: true, configurable: true, )); console.log(obj.property1); // 788 // with an accessor property descriptor Object.defineProperty(obj, "property2", ( get() ( console.log("Getting Value… "); return val; ), set(newVal) ( console.log("Setting Value… "); val = newVal; ), enumerable: true, configurable: true, )); obj.property2 = 6969; // Setting Value… console.log(obj.property2); // 6969

Παραγωγή

 788 Ρύθμιση τιμής… Λήψη τιμής… 6969

Δεν μπορούμε να συνδυάσουμε τόσο τα δεδομένα όσο και τα περιγραφικά στοιχεία ιδιοκτησίας πρόσβασης, καθώς θα προκαλούσε σφάλμα

Για να τροποποιήσετε μια ιδιότητα, η ιδιότητα του αντικειμένου writableπρέπει να είναι true, αλλιώς δεν θα τροποποιήσει και θα ρίξει σφάλμα σε αυστηρή λειτουργία.

Το enumerableχαρακτηριστικό ιδιότητας καθορίζει εάν η ιδιότητα επιλέγεται από τον Object.assign()φορέα εκμετάλλευσης ή διαδίδεται.

Το configurableχαρακτηριστικό ελέγχει ταυτόχρονα εάν η ιδιότητα μπορεί να διαγραφεί από το αντικείμενο και εάν τα χαρακτηριστικά της (εκτός από valueκαι writable) μπορούν να αλλάξουν.

Προτεινόμενη ανάγνωση: Javascript Object defineProperties ()

ενδιαφέροντα άρθρα...