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 isExtensible()

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 juillet 2015.

La méthode statique Object.isExtensible() détermine si un objet est extensible (c'est-à-dire s'il peut avoir de nouvelles propriétés ajoutées).

Exemple interactif

const object = {};

console.log(Object.isExtensible(object));
// Résultat attendu : true

Object.preventExtensions(object);

console.log(Object.isExtensible(object));
// Résultat attendu : false

Syntaxe

js
Object.isExtensible(obj)

Paramètres

obj

L'objet dont on souhaite vérifier s'il est extensible.

Valeur de retour

Un booléen (Boolean) qui indique si oui ou non l'objet passé en argument peut être étendu.

Description

Les objets sont extensibles par défaut : on peut leur ajouter de nouvelles propriétés, et leur [[Prototype]] peut être réassigné. Un objet peut être marqué comme non-extensible en utilisant l'une des méthodes Object.preventExtensions(), Object.seal(), Object.freeze(), ou Reflect.preventExtensions().

Exemples

Utiliser Object.isExtensible()

js
// Les nouveaux objets sont extensibles.
const vide = {};
Object.isExtensible(vide); // true

// Ils peuvent être rendus non-extensibles.
Object.preventExtensions(vide);
Object.isExtensible(vide); // false

// Les objets scellés sont, par définition, non-extensibles.
const scelle = Object.seal({});
Object.isExtensible(scelle); // false

// Les objets gelés sont également, par définition, non-extensibles.
const gele = Object.freeze({});
Object.isExtensible(gele); // false

Argument d'une valeur primitive

Dans ES5, si l'argument passé à cette méthode n'est pas un objet (un primitif), cela entraîne une exception TypeError. Dans ES2015, elle retourne false sans aucune erreur si un argument non-objet est passé, puisque les primitifs sont, par définition, immuables.

js
Object.isExtensible(1);
// TypeError: 1 n'est pas un objet (code ES5)

Object.isExtensible(1);
// false                           (code ES2015)

Spécifications

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

Compatibilité des navigateurs

Voir aussi