Cómo congelar un objeto en JavaScript

Cómo congelar un objeto en JavaScript

Cuando trabajamos con objetos en JavaScript, a veces queremos evitar que sus propiedades sean modificadas por error o malintencionadamente. En estos casos, podemos congelar el objeto para evitar cualquier cambio en sus propiedades. En este artículo aprenderás cómo congelar un objeto en JavaScript.

📋 Aquí podrás encontrar✍
  1. ¿Qué es un objeto congelado?
  2. ¿Cómo se congela un objeto en JavaScript?
  3. ¿Cómo podemos saber si un objeto está congelado?
  4. ¿Cómo podemos descongelar un objeto en JavaScript?
  5. Conclusión
  6. Preguntas frecuentes
    1. ¿En qué se diferencia `Object.freeze()` de `Object.seal()`?
    2. ¿Es posible congelar un objeto anidado en JavaScript?
    3. ¿Cuál es el error que se lanza si intentamos modificar un objeto congelado en JavaScript?
    4. ¿Para qué se utiliza el método `Object.isFrozen()`?

¿Qué es un objeto congelado?

Cuando congelamos un objeto en JavaScript, estamos previniendo que se modifiquen sus propiedades. Un objeto congelado es inmutable, lo que significa que no se pueden agregar, eliminar o modificar sus propiedades. Los objetos congelados son útiles cuando queremos proteger la integridad de los datos de nuestro objeto.

¿Cómo se congela un objeto en JavaScript?

Para congelar un objeto en JavaScript, utilizamos el método `Object.freeze()`. Este método recibe como parámetro el objeto que deseamos congelar. A continuación, un ejemplo de cómo congelar un objeto:


const miObjeto = {
nombre: "Roberto",
edad: 30
};

//Congelar el objeto
Object.freeze(miObjeto);

Una vez que hemos utilizado el método `Object.freeze()`, ya no se pueden realizar cambios en las propiedades del objeto. Si intentamos modificar alguna propiedad del objeto, JavaScript lanzará un error.

¿Cómo podemos saber si un objeto está congelado?

Para saber si un objeto está congelado, podemos utilizar el método `Object.isFrozen()`. Este método devuelve `true` si el objeto está congelado y `false` si no lo está. A continuación, un ejemplo de cómo utilizar `Object.isFrozen()`:


const miObjeto = {
nombre: "Roberto",
edad: 30
};

//Congelar el objeto
Object.freeze(miObjeto);

//Comprobar si está congelado
console.log(Object.isFrozen(miObjeto)); //true

¿Cómo podemos descongelar un objeto en JavaScript?

Si queremos volver a cambiar el objeto después de haberlo congelado, podemos descongelarlo utilizando el método `Object.seal()`. Este método permite agregar o eliminar propiedades del objeto, pero no permite cambiar su valor. A continuación, un ejemplo de cómo descongelar un objeto:


const miObjeto = {
nombre: "Roberto",
edad: 30
};

//Congelar el objeto
Object.freeze(miObjeto);

//Descongelar el objeto
Object.seal(miObjeto);

//Cambiar una propiedad del objeto
miObjeto.edad = 31;

console.log(miObjeto); //{nombre: "Roberto", edad: 31}

Conclusión

Congelar un objeto en JavaScript es una buena práctica cuando queremos proteger los datos de nuestro objeto. Utilizando el método `Object.freeze()`, podemos evitar que se modifiquen sus propiedades por error o malintención. Si quieres mantener la integridad de tus objetos en tu código de JavaScript, ¡no dudes en utilizar `Object.freeze()`!

Preguntas frecuentes

¿En qué se diferencia `Object.freeze()` de `Object.seal()`?

`Object.freeze()` evita que se modifiquen las propiedades del objeto, mientras que `Object.seal()` permite agregar o eliminar propiedades, pero no permite cambiar su valor.

¿Es posible congelar un objeto anidado en JavaScript?

Sí, es posible congelar un objeto anidado en JavaScript utilizando el método `Object.freeze()` en cada objeto anidado.

¿Cuál es el error que se lanza si intentamos modificar un objeto congelado en JavaScript?

El error que se lanza es `TypeError: Cannot assign to read only property '' of object '#'`.

¿Para qué se utiliza el método `Object.isFrozen()`?

`Object.isFrozen()` se utiliza para saber si un objeto ha sido congelado o no.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir