Introdução
Neste laboratório, exploraremos como "deep freeze" (congelar profundamente) um objeto em JavaScript. Aprenderemos como usar o método Object.freeze() recursivamente para congelar todas as propriedades de um objeto, tornando-o imutável. Ao final deste laboratório, você terá uma melhor compreensão de como evitar modificações em objetos e garantir a integridade dos dados em seu código JavaScript.
Como Congelar Profundamente um Objeto em JavaScript
Para congelar profundamente um objeto em JavaScript, siga estes passos:
- Use
Object.keys()para obter todas as propriedades do objeto passado. - Itere sobre as propriedades usando
Array.prototype.forEach(). - Chame
Object.freeze()recursivamente em todas as propriedades que são objetos, aplicandodeepFreeze()conforme necessário. - Finalmente, use
Object.freeze()para congelar o objeto dado.
Aqui está o código:
const deepFreeze = (obj) => {
Object.keys(obj).forEach((prop) => {
if (typeof obj[prop] === "object") deepFreeze(obj[prop]);
});
return Object.freeze(obj);
};
Você pode testar o objeto congelado profundamente usando o seguinte código:
"use strict";
const val = deepFreeze([1, [2, 3]]);
val[0] = 3; // not allowed
val[1][0] = 4; // not allowed as well
O código acima lançará um erro porque o objeto val está profundamente congelado e não pode ser modificado.
Resumo
Parabéns! Você concluiu o laboratório de "Deep Freeze Object". Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.