Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Object : méthode statique getOwnPropertyDescriptors()

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis avril 2017.

La méthode statique Object.getOwnPropertyDescriptors() retourne l'ensemble des descripteurs des propriétés propres d'un objet donné.

Exemple interactif

const object = {
  foo: 42,
};

const descriptors = Object.getOwnPropertyDescriptors(object);

console.log(descriptors.foo.writable);
// Résultat attendu : true

console.log(descriptors.foo.value);
// Résultat attendu : 42

Syntaxe

js
Object.getOwnPropertyDescriptors(obj)

Paramètres

obj

L'objet dont on souhaite connaître les descripteurs des propriétés.

Valeur de retour

Un objet qui contient tous les descripteurs des propriétés propres d'un objet. S'il n'y aucune propriété, c'est un objet vide.

Description

Cette méthode permet d'examiner la description précise d'une propriété. Une propriété en JavaScript se compose soit d'un nom de type chaîne de caractères, soit d'un Symbol et d'un descripteur de propriété. Des informations supplémentaires sur les types de descripteurs de propriété et leurs attributs peuvent être trouvées dans Object.defineProperty().

Un descripteur de propriété est un enregistrement avec certains des attributs suivants :

value

La valeur associée à la propriété (uniquement pour les descripteurs de données).

writable

true si et seulement si la valeur associée à la propriété peut être modifiée (uniquement pour les descripteurs de données).

get

Une fonction qui sert d'accesseur pour la propriété, ou undefined s'il n'y a pas d'accesseur (uniquement pour les descripteurs d'accesseur).

set

Une fonction qui sert de mutateur pour la propriété, ou undefined s'il n'y a pas de mutateur (uniquement pour les descripteurs d'accesseur).

configurable

true si et seulement si le type de ce descripteur de propriété peut être modifié et si la propriété peut être supprimée de l'objet correspondant.

enumerable

true si et seulement si cette propriété apparaît lors de l'énumération des propriétés de l'objet correspondant.

Exemples

Créer une copie superficielle

Étant donné que la méthode Object.assign() ne copie que les propriétés propres et énumérables d'un objet source vers un objet cible, vous pouvez utiliser cette méthode et Object.create() pour réaliser une copie superficielle entre deux objets inconnus :

js
Object.create(
  Object.getPrototypeOf(obj),
  Object.getOwnPropertyDescriptors(obj),
);

Créer une sous-classe

Une façon typique de créer une sous-classe consiste à définir la sous-classe, à définir son prototype comme étant une instance de la classe parente, puis à définir les propriétés sur cette instance. Cela peut devenir compliqué, en particulier pour les accesseurs et les mutateurs. À la place, vous pouvez utiliser ce code pour définir le prototype :

js
function superClasse() {}
superClasse.prototype = {
  // Définit le constructeur de la superclasse, ses méthodes et ses propriétés ici
};
function sousClasse() {}
sousClasse.prototype = Object.create(superClasse.prototype, {
  // Définit le constructeur de la sous-classe, ses méthodes et ses propriétés ici
});

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# sec-object.getownpropertydescriptors

Compatibilité des navigateurs

Voir aussi