Object.getOwnPropertyDescriptor()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
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