Mesclagem segura de objetos; congelamento e selagem
Mescle objetos sem surpresas, evite poluição de protótipos e proteja os dados com Object.freeze e Object.seal
Mesclagem segura de objetos; congelamento e selagem é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 3 aulas no total.
Por que fazer mesclagens seguras?
Objetivo: Fazer mesclagens com segurança e proteger o estado.
- Faça uma mesclagem superficial com expansão ou Object.assign
- Evite a poluição do protótipo filtrando as chaves
- Use Object.create(null) para obter alvos seguros
- Use freeze e seal para bloquear objetos

Mesclagem superficial (expansão)
Use a expansão (ou Object.assign({}, a, b)) para criar um novo objeto; não altere as entradas.
// Shallow merge with spread keeps sources unchanged
const a = { x: 1, y: 2 };
const b = { y: 9, z: 3 };
// Later keys win on conflicts
const merged1 = { ...a, ...b };
console.log("a:", a);
console.log("b:", b);
console.log("merged1:", merged1);

Evite a poluição do protótipo
Quando as chaves vêm de fora, escreva uma pequena lista de permissão/lista de bloqueio e use Object.create(null) como alvo.
// Avoid prototype pollution: use a null-prototype target and skip special keys
function safeMergeUntrusted(pairs) {
// target has no prototype
const out = Object.create(null);
// keys to skip
const BLOCK = new Set(["__proto__", "prototype", "constructor"]);
for (const [k, v] of pairs) {
if (typeof k !== "string") continue;
if (BLOCK.has(k)) continue;
out[k] = v;
}
return out;
}
const inputPairs = [
["name", "Ayla"],
["__proto__", { hacked: true }],
["role", "user"]
];
const safe = safeMergeUntrusted(inputPairs);
console.log("safe.name:", safe.name);
console.log("safe.role:", safe.role);
console.log("safe.__proto__ is undefined?", safe.__proto__ === undefined);

Clonar + atribuir
Object.assign({}, ...) é um padrão seguro e fácil de ler para iniciantes.
// Object.assign can also create a new object
const base = { a: 1, b: 2 };
const patch = { b: 5 };
// New object as first arg → sources untouched
const merged2 = Object.assign({}, base, patch);
console.log("base:", base);
console.log("patch:", patch);
console.log("merged2:", merged2);

Congelar versus selar
freeze bloqueia todas as alterações; seal bloqueia adições e remoções, mas permite atualizar propriedades existentes.
// Freeze: no add/remove/change
const frozen = Object.freeze({ id: 1, tag: "locked" });
// Seal: no add/remove, but you may change existing values
const sealed = Object.seal({ id: 2, tag: "open" });
// Attempts (silently fail in non-strict mode)
frozen.tag = "new";
sealed.tag = "updated";
sealed.newKey = 123;
console.log("frozen:", frozen);
console.log("sealed:", sealed);

Bons hábitos para mesclagens seguras
Dicas:
- Prefira novos objetos: {...a, ...b} ou Object.assign({}, a, b).
- Para chaves não confiáveis, use Object.create(null) e ignore __proto__, prototype e constructor.
- Proteja as configurações com Object.freeze; proteja os modelos com Object.seal.

Questionário sobre fundamentos da poluição do protótipo
Verificação rápida: alvo mais seguro para mesclagens com dados não confiáveis.

Recapitulação
Recapitulação: Faça mesclagens criando novos objetos, filtre as chaves não confiáveis e use freeze/seal para proteger estruturas de dados importantes.

Perguntas Frequentes
A aula “Mesclagem segura de objetos; congelamento e selagem” é grátis?
Sim — o texto completo de “Mesclagem segura de objetos; congelamento e selagem” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 3 aulas no total.
O que vou aprender em “Mesclagem segura de objetos; congelamento e selagem”?
Mescle objetos sem surpresas, evite poluição de protótipos e proteja os dados com Object.freeze e Object.seal Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar JavaScript Academy?
Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.
Quanto tempo leva a aula “Mesclagem segura de objetos; congelamento e selagem”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de JavaScript Academy?
Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Validação de entrada e fundamentos de escape
- Mesclagem segura de objetos; congelamento e selagem
- Limites de erro (conceituais) sem estruturas de trabalho