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

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.isSealed() permet de déterminer si un objet est scellé.

Exemple interactif

const object = {
  toto: 42,
};

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

Object.seal(object);

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

Syntaxe

js
Object.isSealed(obj)

Paramètres

obj

L'objet dont on souhaite savoir s'il est scellé.

Valeur de retour

Un booléen (Boolean) indiquant si l'objet est scellé ou non.

Description

Retourne true si l'objet est scellé, false sinon. Un objet est scellé s'il n'est pas extensible et si toutes ses propriétés ne sont pas configurables et donc pas supprimables (mais pas nécessairement non modifiables).

Exemples

Utiliser Object.isSealed()

js
// Les objets ne sont pas scellés par défaut.
const vide = {};
Object.isSealed(vide); // false

// Si un objet vide est rendu non-extensible,
// il est scellé
Object.preventExtensions(vide);
Object.isSealed(vide); // true

// Ce n'est pas le cas d'un objet non vide,
// sauf si toutes ses propriétés sont non configurables.
const hasProp = { fee: "fie foe fum" };
Object.preventExtensions(hasProp);
Object.isSealed(hasProp); // false

// Mais si vous les rendez toutes non configurables,
// l'objet devient scellé.
Object.defineProperty(hasProp, "fee", {
  configurable: false,
});
Object.isSealed(hasProp); // true

// Le moyen le plus simple de sceller un objet, bien sûr,
// est Object.seal.
const scelle = {};
Object.seal(scelle);
Object.isSealed(scelle); // true

// Un objet scellé est, par définition, non-extensible.
Object.isExtensible(scelle); // false

// Un objet scellé peut être gelé,
// mais ce n'est pas obligatoire.
Object.isFrozen(scelle); // true
// (toutes les propriétés également non modifiables)

const s2 = Object.seal({ p: 3 });
Object.isFrozen(s2); // false
// ('p' est toujours modifiable)

const s3 = Object.seal({
  get p() {
    return 0;
  },
});
Object.isFrozen(s3); // true
// (seule la possibilité de configuration compte pour les propriétés d'accès)

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.isSealed(1);
// TypeError: 1 n'est pas un objet (code ES5)

Object.isSealed(1);
// true                          (code ES2015)

Spécifications

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

Compatibilité des navigateurs

Voir aussi