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).
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Syntaxe
Object.getOwnPropertyDescriptor(obj, prop)
Paramètres
obj
- L'objet sur lequel on cherche la propriété.
prop
- Le nom ou le symbole (
Symbol
) 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) 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
Spécification | État | 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 | |
ECMAScript (ECMA-262) La définition de 'Object.getOwnPropertyDescriptor' dans cette spécification. |
Standard évolutif |
Compatibilité des navigateurs
BCD tables only load in the browser