Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Object.isFrozen()
Baseline Widely available
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éthodeObject.isFrozen() permet de déterminer si un objet estgelé.
Dans cet article
Exemple interactif
const object1 = { property1: 42,};console.log(Object.isFrozen(object1));// Expected output: falseObject.freeze(object1);console.log(Object.isFrozen(object1));// Expected output: trueSyntaxe
Object.isFrozen(obj);Paramètres
objL'objet dont on souhaite vérifier s'il est gelé.
Valeur de retour
Un booléen qui indique si oui ou non l'objet passé en argument est gelé.
Description
Un objet est gelé si et seulement s'il n'est pasextensible, que toutes ses propriétés sont non-configurables et que ses propriétés de données (c'est-à-dire les propriétés qui ne sont pas des accesseurs ou des mutateurs) sont non-accessibles en écriture.
Exemples
// Un objet nouvellement créé est extensible// et est donc dégeléObject.isFrozen({}); // false// Un objet vide et non extensible est gelévar videGelé = Object.preventExtensions({});Object.isFrozen(videGelé); // true// Un nouvel objet avec une propriété est// extensible et donc dégelévar uneProp = { p: 42 };Object.isFrozen(uneProp); // false// Si on empêche d'étendre un objet non vide,// cela ne le rend pas gelé car la propriété// est toujours configurable (et accessible// en écriture)Object.preventExtensions(uneProp);Object.isFrozen(uneProp); // false// ...si on supprime la seule propriété existante// en revanche, on a bien un objet gelédelete uneProp.p;Object.isFrozen(uneProp); // true// Un objet non-extensible et avec une propriété// non-accessible en écriture mais toujours configurable// n'est pas gelévar nonWritable = { e: "plep" };Object.preventExtensions(nonWritable);Object.defineProperty(nonWritable, "e", { writable: false });// on la rend non accessible en écritureObject.isFrozen(nonWritable); // false// Si on rend la propriété non-configurable,// l'objet devient geléObject.defineProperty(nonWritable, "e", { configurable: false });// on la rend non-configurableObject.isFrozen(nonWritable) === true);// Un objet non-extensible avec une propriété non-configurable// mais accessible en écriture n'est pas gelévar nonConfigurable = { release: "the kraken!" };Object.preventExtensions(nonConfigurable);Object.defineProperty(nonConfigurable, "release", { configurable: false });Object.isFrozen(nonConfigurable); // false// Si cette propriété devient non accessible// en écriture, l'objet est geléObject.defineProperty(nonConfigurable, "release", { writable: false });Object.isFrozen(nonConfigurable); // true// Un objet non-extensible avec un accesseur// configurable n'est pas gelévar accesseur = { get manger() { return "miam"; } };Object.preventExtensions(accesseur);Object.isFrozen(accesseur); // false// ...si on rend la propriété non-configurable,// l'objet est gelé.Object.defineProperty(accesseur, "manger", { configurable: false });Object.isFrozen(accesseur); // true// La façon la plus simple est d'utiliser la// méthode Object.freezevar gelé = { 1: 81 };Object.isFrozen(gelé); // falseObject.freeze(gelé);Object.isFrozen(gelé); // true// Par définition, un objet gelé est non-extensible.Object.isExtensible(gelé); // false// Par définition, un objet gelé est scellé.Object.isSealed(gelé); // trueNotes
Pour ES5, si l'argument passé à la méthode n'est pas un objet (mais est d'un autre type primitif), cela entraînera une exceptionTypeError. Pour ES2015, un argument qui n'est pas un objet sera traité comme s'il était un objet gelé et la méthode renverratrue.
Object.isFrozen(1);// TypeError: 1 n'est pas un objet (code ES5)Object.isFrozen(1);// true (code ES2015)Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.isfrozen> |