Object.getOwnPropertyDescriptor()

par 1 contributeur :

La méthode Object.getOwnPropertyDescriptor() renvoie un descripteur de la propriété propre d'un objet (c'est-à-dire une propriété directement présente et pas héritée via la chaîne de prototypes).

Syntaxe

Object.getOwnPropertyDescriptor(obj, prop)

Paramètres

obj
L'objet sur lequel on cherche la propriété.
prop
Le nom de la propriété dont on souhaite avoir la description.

Valeur de retour

Un descripteur de propriété de la propriété souhaitée si elle existe pour l'objet en question, sinon undefined.

Description

Cette méthode permet d'avoir des informations précises sur une propriété. Une propriété JavaScript est un nom (qui est une chaîne de caractères) associé à un descripteur. Voir la page Object.defineProperty pour plus d'informations sur les descripteurs de propriétés.

Un descripteur de propriété est un enregistrement qui dispose des attributs suivants :

value
La valeur associée à la propriété (pour les descripteurs de données uniquement).
writable
true si et seulement si la valeur associée à la propriété peut être changée (pour les descripteurs de données uniquement).
get
Une fonction qui joue le rôle d'accesseur (getter) pour la propriété ou undefined s'il n'y a pas d'accesseur (pour les descripteurs d'accesseurs uniquement).
set
Une fonction qui joue le rôle de mutateur (setter) pour la propriété ou undefined s'il n'y a pas de tel mutateur (pour les descripteurs d'accesseurs uniquement).
configurable
true si et seulement si le type du descripteur peut être changé et si la propriété peut être supprimée de l'objet.
enumerable
true si et seulement si la propriété doit apparaître lors d'une énumération des propriétés de l'objet.

Exemples

var o, d;

o = { get toto() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, "toto");
// d is { configurable: true, enumerable: true, get: /*l'accesseur*/, set: undefined }

o = { truc: 42 };
d = Object.getOwnPropertyDescriptor(o, "truc");
// d is { configurable: true, enumerable: true, value: 42, writable: true }

o = {};
Object.defineProperty(o, "machin", { value: 8675309, writable: false, enumerable: false });
d = Object.getOwnPropertyDescriptor(o, "machin");
// d is { value: 8675309, writable: false, enumerable: false, configurable: false }

Notes

Pour ES5, si le premier argument de la méthode n'est pas un objet (mais une valeur d'un autre type), une exception TypeError sera levée. Pour ES6, un argument non-objet sera d'abord converti en objet avant d'appliquer la méthode.

Object.getOwnPropertyDescriptor("toto", 0);
// TypeError: "toto" n'est pas un objet  // code ES5

Object.getOwnPropertyDescriptor("toto", 0);
// {configurable:false, enumerable:true, value:"f", writable:false}  // code ES6

Spécifications

Spécification Statut Commentaires
ECMAScript 5.1 (ECMA-262)
La définition de 'Object.getOwnPropertyDescriptor' dans cette spécification.
Standard Définition initiale.
Implémentée avec JavaScript 1.8.5
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Object.getOwnPropertyDescriptor' dans cette spécification.
Standard  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple 5 4.0 (2) 8 12 5
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple ? ? ? ? ? ?

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,