Congelar Objeto Profundamente

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos cómo congelar profundamente un objeto en JavaScript. Aprenderemos a usar recursivamente el método Object.freeze() para congelar todas las propiedades de un objeto, haciéndolo inmutable. Al final de este laboratorio, tendrás una mejor comprensión de cómo prevenir modificaciones a los objetos y garantizar la integridad de los datos en tu código JavaScript.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 92%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Cómo congelar profundamente un objeto en JavaScript

Para congelar profundamente un objeto en JavaScript, siga estos pasos:

  1. Utilice Object.keys() para obtener todas las propiedades del objeto pasado.
  2. Itere sobre las propiedades utilizando Array.prototype.forEach().
  3. Llame recursivamente a Object.freeze() en todas las propiedades que son objetos, aplicando deepFreeze() si es necesario.
  4. Finalmente, utilice Object.freeze() para congelar el objeto dado.

Aquí está el código:

const deepFreeze = (obj) => {
  Object.keys(obj).forEach((prop) => {
    if (typeof obj[prop] === "object") deepFreeze(obj[prop]);
  });
  return Object.freeze(obj);
};

Puede probar el objeto congelado profundamente utilizando el siguiente código:

"use strict";

const val = deepFreeze([1, [2, 3]]);

val[0] = 3; // no permitido
val[1][0] = 4; // tampoco está permitido

El código anterior generará un error porque el objeto val está congelado profundamente y no se puede modificar.

Resumen

¡Felicidades! Has completado el laboratorio de Congelar Objeto Profundamente. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.