Congelar Objeto Profundamente

JavaScriptJavaScriptBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") subgraph Lab Skills javascript/variables -.-> lab-28263{{"Congelar Objeto Profundamente"}} javascript/data_types -.-> lab-28263{{"Congelar Objeto Profundamente"}} javascript/arith_ops -.-> lab-28263{{"Congelar Objeto Profundamente"}} javascript/comp_ops -.-> lab-28263{{"Congelar Objeto Profundamente"}} javascript/cond_stmts -.-> lab-28263{{"Congelar Objeto Profundamente"}} javascript/array_methods -.-> lab-28263{{"Congelar Objeto Profundamente"}} end

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.