Sobes.tech
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():

  1. Criação de objetos constantes: Garantia de que o objeto não será alterado no código subsequente.
  2. Melhoria de desempenho: Alguns motores JavaScript acham mais fácil otimizar o acesso a objetos imutáveis.
  3. 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