Η μέθοδος 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 ()