Junior
O que faz o método freeze em JavaScript?
sobes.tech IA
Resposta da IA
O método Object.freeze() congela um objeto, impedindo a adição de novas propriedades, a remoção das existentes e a alteração dos valores das propriedades existentes. Também impede a alteração do protótipo do objeto. Um objeto congelado permanece inalterado.
Aplicação de Object.freeze():
- Criação de objetos constantes: Garantia de que o objeto não será alterado no código subsequente.
- Melhoria de desempenho: Alguns motores JavaScript acham mais fácil otimizar o acesso a objetos imutáveis.
- Segurança: Protege os dados internos do objeto contra alterações acidentais ou maliciosas.
Nota importante: Object.freeze() congela apenas superficialmente (congelamento superficial). Se as propriedades do objeto tiverem referências a outros objetos, esses objetos aninhados podem ser modificados se não tiverem sido congelados separadamente.
Exemplo:
const obj = {
prop1: 42,
prop2: {
nestedProp: 'hello'
}
};
Object.freeze(obj);
// Tentativas de alteração serão ignoradas em modo "estrito"
// Em modo não estrito, podem não gerar erro, mas as alterações não ocorrerão
obj.prop1 = 100; // Não mudará
delete obj.prop1; // Não será excluído
obj.newProp = 'world'; // Não será adicionado
console.log(obj.prop1); // 42
console.log(obj.newProp); // undefined
// Objeto aninhado NÃO está congelado
obj.prop2.nestedProp = 'goodbye'; // Será alterado
console.log(obj.prop2.nestedProp); // goodbye