Volver a la página principal
jueves 26 septiembre 2024
14

Cómo congelar un objeto en JavaScript

El método Object.freeze en JavaScript se utiliza para congelar un objeto, lo que significa que previene la modificación de sus propiedades. Esto es útil cuando se desea que un objeto sea inmutable, es decir, que sus valores no puedan ser cambiados, añadidos o eliminados.

¿Cómo funciona Object.freeze en JavaScript?

Cuando se aplica Object.freeze(objeto), el objeto pasado como argumento queda completamente inmovilizado. No se pueden agregar nuevas propiedades, eliminar las existentes, ni modificar el valor o configuración de las propiedades ya presentes en el objeto.

const persona = {
  nombre: "Juan",
  edad: 30
};

Object.freeze(persona);

persona.edad = 35; // No cambia el valor, sigue siendo 30
persona.apellido = "Pérez"; // No se agrega la propiedad
delete persona.nombre; // No elimina la propiedad

console.log(persona); 
// Salida: { nombre: "Juan", edad: 30 }

Ejemplos de uso de Object.freeze

Ejemplo 1: Congelando un objeto simple

const coche = {
  marca: "Toyota",
  modelo: "Corolla"
};

Object.freeze(coche);

coche.modelo = "Camry"; // No cambiará el valor
console.log(coche.modelo); // "Corolla"

Ejemplo 2: Intentando agregar nuevas propiedades

const configuracion = {
  tema: "oscuro"
};

Object.freeze(configuracion);
configuracion.fuente = "Arial"; // No se agregará la propiedad
console.log(configuracion.fuente); // undefined

Limitaciones de Object.freeze

  • Solo congela las propiedades del primer nivel del objeto. Si el objeto tiene propiedades que son también objetos, estas propiedades internas no estarán congeladas.
const usuario = {
  nombre: "Ana",
  direccion: {
    ciudad: "Madrid"
  }
};

Object.freeze(usuario);
usuario.direccion.ciudad = "Barcelona"; // Esto es posible, ya que la propiedad interna no está congelada

console.log(usuario.direccion.ciudad); // "Barcelona"

Para congelar profundamente todos los niveles de un objeto, es necesario implementar una función que recorra y congele cada objeto dentro del objeto principal.

Referencia oficial

Puedes encontrar más detalles sobre el método Object.freeze en la documentación oficial de MDN.

Etiquetas:
javascript
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer