0Pricing
JavaScript Academy · Aula

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 segura de objetos; congelamento e selagem — ilustração 1

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);
Mesclagem segura de objetos; congelamento e selagem — ilustração 2

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);
Mesclagem segura de objetos; congelamento e selagem — ilustração 3

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);
Mesclagem segura de objetos; congelamento e selagem — ilustração 4

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);
Mesclagem segura de objetos; congelamento e selagem — ilustração 5

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.
Mesclagem segura de objetos; congelamento e selagem — ilustração 6

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.

Mesclagem segura de objetos; congelamento e selagem — ilustração 7

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.

Mesclagem segura de objetos; congelamento e selagem — ilustração 8

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

  1. Validação de entrada e fundamentos de escape
  2. Mesclagem segura de objetos; congelamento e selagem
  3. Limites de erro (conceituais) sem estruturas de trabalho
← Voltar para JavaScript Academy