Cómo congelar profundamente un objeto en JavaScript
Para congelar profundamente un objeto en JavaScript, siga estos pasos:
- Utilice
Object.keys() para obtener todas las propiedades del objeto pasado.
- Itere sobre las propiedades utilizando
Array.prototype.forEach().
- Llame recursivamente a
Object.freeze() en todas las propiedades que son objetos, aplicando deepFreeze() si es necesario.
- 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.