Este articulo necesita una revisión técnica. Cómo puedes ayudar.
Este articulo necesita una revisión editorial. Cómo puedes ayudar.
Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
El método Object.isFrozen()
determina si un objeto está congelado.
Síntaxis
Object.isFrozen(obj)
Parametros
obj
- El objeto a ser revisado.
Descripción
Un objeto está congelado si y solo si no es extendible, todas sus propiedades son no-configurables, y todos los datos de sus propiedades no tienen capacidad de escritura.
Ejemplos
// Un objeto nuevo es extendible, así que no está congelado. Object.isFrozen({}); // === false // Un objeto vacio el cuál no es extendible está congelado vacuamente. var vacuouslyFrozen = Object.preventExtensions({}); Object.isFrozen(vacuouslyFrozen); // === true // Un objeto nuevo con una propiedad es tabién extendible, ergo no congelado. var oneProp = { p: 42 }; Object.isFrozen(oneProp); // === false // Prevenir la extensión de un objeto no lo congela. // porque la propiedad sigue teniendo capacidad de configuración (y capacidad de escritura). Object.preventExtensions(oneProp); Object.isFrozen(oneProp); // === false // ...pero eliminar la propiedad congela el objeto vacuamente. delete oneProp.p; Object.isFrozen(oneProp); // === true // Un ojbeto no-extendible con una propiedad sin capacidad de escritura pero si con capacidad de configuración no está congelado. var nonWritable = { e: 'plep' }; Object.preventExtensions(nonWritable); Object.defineProperty(nonWritable, 'e', { writable: false }); // Le quita la capacidad de escritura. Object.isFrozen(nonWritable); // === false // Quitarle la capacidad de configuración a una propiedad congela el objeto. Object.defineProperty(nonWritable, 'e', { configurable: false }); // le quita la capacidad de configuración. Object.isFrozen(nonWritable); // === true // Un objeto no-extendible con una propiedad sin capacidad de configuración pero con capacidad de escritura no congela a dicho objeto. var nonConfigurable = { release: 'the kraken!' }; Object.preventExtensions(nonConfigurable); Object.defineProperty(nonConfigurable, 'release', { configurable: false }); Object.isFrozen(nonConfigurable); // === false // Quitarle la capacidad de configuración a esa propiedad congela el objeto. Object.defineProperty(nonConfigurable, 'release', { writable: false }); Object.isFrozen(nonConfigurable); // === true // A non-extensible object with a configurable accessor property isn't frozen. var accessor = { get food() { return 'yum'; } }; Object.preventExtensions(accessor); Object.isFrozen(accessor); // === false // ...but make that property non-configurable and it becomes frozen. Object.defineProperty(accessor, 'food', { configurable: false }); Object.isFrozen(accessor); // === true // But the easiest way for an object to be frozen is if Object.freeze has been called on it. var frozen = { 1: 81 }; Object.isFrozen(frozen); // === false Object.freeze(frozen); Object.isFrozen(frozen); // === true // By definition, a frozen object is non-extensible. Object.isExtensible(frozen); // === false // Also by definition, a frozen object is sealed. Object.isSealed(frozen); // === true
Notas
En ES5, si el argumento pasado a éste método no es un objeto (primitivo), entonces causará un TypeError
. En ES6, un no-objeto pasado como argumento será tratado como si fuera un objeto ordinario congelado, simplemente regresa true
.
Object.isFrozen(1); // TypeError: 1 is not an object (ES5 code) Object.isFrozen(1); // true (ES6 code)
Especificaciones
Especificación | Estado | Comentario |
---|---|---|
ECMAScript 5.1 (ECMA-262) The definition of 'Object.isFrozen' in that specification. |
Standard |
Definición inicial. Implementada en JavaScript 1.8.5. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.isFrozen' in that specification. |
Standard |
Compatibilidad con navegadores
Caracteristicas | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Soporte básico | 6 | 4.0 (2.0) | 9 | 12 | 5.1 |
Caracteristicas | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Soporte básico | ? | ? | ? | ? | ? | ? |