Objet Javascript.defineProperty ()

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 Objectnom 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 Symbolla 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, getet les setclés, il est traité comme un descripteur de données. Si un descripteur possède à la fois les clés valueou writableet getou set, 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 writabledoit être true, sinon elle ne modifiera pas et ne lancera pas d'erreur en mode strict.

L' enumerableattribut 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' configurableattribut contrôle en même temps si la propriété peut être supprimée de l'objet et si ses attributs (autres que valueet writable) peuvent être modifiés.

Lecture recommandée: Objet Javascript defineProperties ()

Articles intéressants...