Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
Object.isFrozen()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
O métodoObject.isFrozen() determina se um objeto estáfrozen.
In this article
Experimente
const object1 = { property1: 42,};console.log(Object.isFrozen(object1));// Expected output: falseObject.freeze(object1);console.log(Object.isFrozen(object1));// Expected output: trueSintaxe
Object.isFrozen(obj)
Parameters
objO objeto que será verificado.
Return value
Um valorBoolean indicando se o objeto está frozen.
Descrição
Um objeto estará frozen se, e apenas se, ele não forextensible, todas as suas propriedades não são configuráveis e todas suas propriedades de dados (propriedades que não são asessores de propriedades com getters ou setters) não podem ser modificadas.
Examples
// Um novo objeto é extensível, então ele não está frozen.Object.isFrozen({}); // === false// Um objeto vazio que não é extensível// é vagamente frozen.var vacuouslyFrozen = Object.preventExtensions({});Object.isFrozen(vacuouslyFrozen); // === true// Um novo objeto com uma propriedade também é extensível,// portanto não está frozen.var oneProp = { p: 42 };Object.isFrozen(oneProp); // === false// Impedir extensões do objeto ainda// não o torna frozen, pois a propriedade ainda será// configurável (e modificável).Object.preventExtensions(oneProp);Object.isFrozen(oneProp); // === false// ...Porém, deletando a propriedade o objeto se tornará// vagamente frozen.delete oneProp.p;Object.isFrozen(oneProp); // === true// Um objeto não extensível e não modificável,// mas com uma propriedade configurável não será frozen.var nonWritable = { e: "plep" };Object.preventExtensions(nonWritable);Object.defineProperty(nonWritable, "e", { writable: false,}); // tornar não modificávelObject.isFrozen(nonWritable); // === false// Alterando a propriedade para não configurável// tornará o objeto frozen.Object.defineProperty(nonWritable, "e", { configurable: false,}); // make non-configurableObject.isFrozen(nonWritable); // === true// Um objeto não extensível com uma propriedade não configurável// mas modificável não será frozen.var nonConfigurable = { release: "the kraken!" };Object.preventExtensions(nonConfigurable);Object.defineProperty(nonConfigurable, "release", { configurable: false,});Object.isFrozen(nonConfigurable); // === false// Alterando a propriedade para não modificável// tornará o objeto frozen.Object.defineProperty(nonConfigurable, "release", { writable: false,});Object.isFrozen(nonConfigurable); // === true// Um objeto não extensível com um assessor de propriedade// configurável não será frozen.var accessor = { get food() { return "yum"; },};Object.preventExtensions(accessor);Object.isFrozen(accessor); // === false// ...Mas alterando essa propriedade para não configurável// o objeto se tornará frozen.Object.defineProperty(accessor, "food", { configurable: false,});Object.isFrozen(accessor); // === true// A forma mais fácil para um objeto ser frozen// é se o método Object.freeze foi usado nele.var frozen = { 1: 81 };Object.isFrozen(frozen); // === falseObject.freeze(frozen);Object.isFrozen(frozen); // === true// Por definição, um objeto frozen não é extensível.Object.isExtensible(frozen); // === false// Também por definição, um objeto frozen estará sealed.Object.isSealed(frozen); // === trueNotas
No ES5, se o argumento deste método não for um objeot (uma primitiva), ele irá lançar umTypeError. No ES2015, um argumento que não é objeto será sempre tratado como se fosse um objeto frozen, simplesmente retornandotrue.
Object.isFrozen(1);// TypeError: 1 is not an object (ES5 code)Object.isFrozen(1);// true (ES2015 code)Especificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.isfrozen> |