close

JavaScript : Le descripteur de propriété

#1 Lire le descripteur d'une propriété d'un objet avec Object.getOwnPropertyDescriptor() open

Lorsque vous créez une propriété dans un objet, il se trouve qu'elle a un certain nombre de caractéristiques. Ces caractéristiques sont stockées dans un descripteur de propriété. Il y a des valeurs par défaut.

Le descripteur de propriété se présente sous la forme d'un objet dans lequel on trouve une propriété pour chaque caractéristique de la propriété initiale.

Ci-dessous, je crée une propriété, puis je récupère son descripteur au moyen de la méthode getOwnPropertyDescriptor. Ensuite, je visualise ses caractéristiques par défaut avec un console.dir().

Tester le code
Valeurs par défaut du descripteur de propriété

Le descripteur de propriété contient donc par défaut les propriétés suivantes configurable, enumerable, value et writable. Chaque propriété a évidemment une valeur. On va regarder de plus près ce que ces propriétés veulent dire.

#2 Signification des propriétés contenues dans le descripteur d'une propriété open

  • configurable : si true, le descripteur de la propriété peut être modifié et la propriété peut être supprimée. Si false, nous ne pouvons faire aucune de ces choses.
  • enumerable : si true, la propriété apparaît lors une boucle for in sur l'objet.
  • writable : si true, la valeur de la propriété peut être modifiée à l'aide d'une affectation.

#3 Modifier une propriété avec Object.defineProperty() open

Vous devez utiliser Object.defineProperty pour créer ou modifier les caractéristiques d'une propriété. Ci-dessous, je passe l'instance de l'objet en premier argument de Object.defineProperty puis le nom de la propriété (* attention en tant que chaîne de caractères), puis enfin en troisième argument un objet. C'est cet objet qui contient la liste des caractéristiques de la propriété. Ici, je ne fais que changer la valeur de enumerable en la passant à false.

Tester le code
Modification de la valeur de enumerable avec defineProperty
Modifier une caractéristique du descripteur

#4 Créer complètement une propriété avec Object.defineProperty() open

Vous pouvez utiliser Object.defineProperty pour créer complètement une propriété tout en configurant précisément son descripteur. Ci-dessous, je crée la propriété property sur l'instance obj et je configure ses valeurs pour value, configurable, writable, enumerable.

Tester le code
Créer complètement une propriété avec defineProperty