JavaScriptObjetosintermediario

Object.freeze e seal

Em aplicações reais, você frequentemente precisa garantir que certos objetos não sejam alterados acidentalmente — por exemplo, configurações globais, constantes de sistema ou dados armazenados em cache. Usar Object.freeze() e Object.seal() protege seu código contra mutações indesejadas, evitando bugs difíceis de rastrear. Dominar esses métodos ajuda a escrever código mais previsível e seguro.

O PROBLEMA

Demonstre Object.freeze() (imutável) e Object.seal() (sem add/delete mas pode editar).

EXEMPLO

const config = Object.freeze({api:"url"});
config.api = "outra"; // ignorado

SOBRE O CONCEITO

Object.freeze() torna um objeto completamente imutável: você não pode adicionar, remover ou alterar propriedades existentes. Já Object.seal() impede adição e remoção de propriedades, mas permite modificar valores das propriedades atuais. Um erro comum é assumir que freeze é profundo — na verdade, ele é raso (shallow). Se o objeto congelado contiver outro objeto aninhado, esse objeto interno ainda poderá ser alterado. Por exemplo: const config = Object.freeze({api: {url: 'http://exemplo.com'}}); config.api.url = 'novo'; — a alteração será ignorada? Não, ela será permitida porque o objeto api não foi congelado. Para congelar profundamente, é necessário aplicar freeze recursivamente em cada objeto aninhado, mas isso é proibido aqui (sem loops ou funções). O exercício permite apenas const, console.log, objetos literais, Object.freeze e Object.seal, então foque em demonstrar o comportamento de cada método com objetos simples.

RESOLUÇÃO

Mais exercícios de Objetos

JSO011 · IntermediárioFactory functionJSO001 · BásicoCriar objeto simplesJSO003 · BásicoMétodo no objetoJSO006 · BásicoDesestruturação de objeto
Ver todos os exercícios de JavaScript