Object.isExtensible()

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.isExtensible() permet de déterminer si un objet est extensible (c'est-à-dire qu'on peut lui ajouter de nouvelles propriétés).

Exemple interactif

const object1 = {};

console.log(Object.isExtensible(object1));
// Expected output: true

Object.preventExtensions(object1);

console.log(Object.isExtensible(object1));
// Expected output: 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 qui indique si oui ou non l'objet passé en argument peut être étendu.

Description

Par défaut, les objets sont extensibles, on peut leur ajouter de nouvelles propriétés (et pour les moteurs qui supportent Object.prototype.__proto__ Obsolète , leur propriété __proto__ peut être modifiée). Un objet peut devenir non-extensible en utilisant les méthodes Object.preventExtensions(), Object.seal(), ou Object.freeze().

Exemples

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

// ...mais on peut les rendre non-extensibles.
Object.preventExtensions(vide);
Object.isExtensible(vide); // false

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

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

Notes

Pour ES5, si l'argument passé à la méthode n'est pas un objet mais une valeur d'un autre type primitif, cela entraînera une exception TypeError. Pour ES2015, un argument qui n'est pas un objet sera traité comme un objet ordinaire non-extensible, la méthode renverra false.

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

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

Spécifications

Specification
ECMAScript® 2025 Language Specification
# sec-object.isextensible

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
isExtensible

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Voir aussi