La méthode JavaScript Object.defineProperty () ajoute ou modifie une propriété existante sur un objet et renvoie l'objet.
La syntaxe de la defineProperty()
méthode est:
Object.defineProperty(obj, prop, descriptor)
La defineProperty()
méthode, étant une méthode statique, est appelée en utilisant le Object
nom de la classe.
Paramètres defineProperty ()
La defineProperty()
méthode prend en compte:
- obj - Objet sur lequel définir la propriété.
- prop - Le nom ou
Symbol
la propriété à définir ou à modifier. - descriptor - Le descripteur de la propriété en cours de définition ou de modification.
Les descripteurs de propriété présents dans les objets sont de deux types: les descripteurs de données et les descripteurs d'accesseur. Ils peuvent avoir les propriétés facultatives suivantes.
configurable
enumerable
Un descripteur de données peut également avoir:
value
writable
Un descripteur d'accesseur peut également avoir:
get
set
Valeur renvoyée par defineProperty ()
- Renvoie l'objet qui a été passé à la fonction.
Remarque:
- Par défaut, les valeurs ajoutées à l'aide de
Object.defineProperty()
sont immuables et non énumérables. - Si un descripteur n'a ni de
value
,writable
,get
et lesset
clés, il est traité comme un descripteur de données. Si un descripteur possède à la fois les clésvalue
ouwritable
etget
ouset
, une exception est levée.
Exemple: ajout d'une propriété de données à un objet
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
Production
788 Valeur de réglage… Obtention de la valeur… 6969
Nous ne pouvons pas mélanger les descripteurs de propriété de données et d'accesseur car cela générerait une erreur.
Pour modifier une propriété, la propriété de l'objet writable
doit être true
, sinon elle ne modifiera pas et ne lancera pas d'erreur en mode strict.
L' enumerable
attribut de propriété définit si la propriété est sélectionnée par Object.assign()
ou par l' opérateur de répartition.
L' configurable
attribut contrôle en même temps si la propriété peut être supprimée de l'objet et si ses attributs (autres que value
et writable
) peuvent être modifiés.
Lecture recommandée: Objet Javascript defineProperties ()