Object.getOwnPropertyDescriptor()
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).
Exemple interactif
Syntaxe
Object.getOwnPropertyDescriptor(obj, prop);
Paramètres
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) ou un symbole (Symbol
) 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 : {
// configurable: true,
// enumerable: true,
// get: /*l'accesseur*/,
// set: undefined
// }
o = { truc: 42 };
d = Object.getOwnPropertyDescriptor(o, "truc");
// d : {
// 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 : {
// 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 ES2015, 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
// code ES2015
Object.getOwnPropertyDescriptor("toto", 0);
// {
// configurable:false,
// enumerable:true,
// value:"f",
// writable:false
// }
Spécifications
Specification |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptor |
Compatibilité des navigateurs
BCD tables only load in the browser