Combinación segura de objetos, congelación y sellado
Combine objetos sin sorpresas, evite la contaminación del prototipo y proteja los datos con Object.freeze y Object.seal.
Combinación segura de objetos, congelación y sellado es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 3 lecciones en total.
¿Por qué combinar de forma segura?
Objetivo: combinar de forma segura y proteger el estado.
- Haga una combinación superficial con spread o Object.assign
- Evite la contaminación del prototipo filtrando las claves
- Use Object.create(null) como destino seguro
- Use freeze y seal para bloquear los objetos

Combinación superficial (spread)
Use spread (o Object.assign({}, a, b)) para crear un objeto nuevo; no modifique las 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);

Evitar la contaminación del prototipo
Cuando las claves provengan del exterior, escriba una pequeña lista de permitidos o bloqueados y use Object.create(null) como destino.
// 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 y asignar
Object.assign({}, ...) es un patrón seguro y fácil de leer para principiantes.
// 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);

freeze frente a seal
freeze bloquea todos los cambios; seal impide añadir o eliminar propiedades, pero permite actualizar las propiedades 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);

Hábitos para combinar de forma segura
Consejos:
- Prefiera objetos nuevos: {...a, ...b} o Object.assign({}, a, b).
- Para claves que no sean de confianza, use Object.create(null) y omita __proto__, prototype y constructor.
- Proteja las configuraciones con Object.freeze y los modelos con Object.seal.

Cuestionario sobre fundamentos de la contaminación del prototipo
Comprobación rápida: el destino más seguro para combinaciones con datos que no sean de confianza.

Resumen
Resumen: combine creando objetos nuevos, filtre las claves que no sean de confianza y use freeze/seal para proteger las estructuras de datos importantes.

Preguntas frecuentes
¿La lección «Combinación segura de objetos, congelación y sellado» es gratis?
Sí — el texto completo de «Combinación segura de objetos, congelación y sellado» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Combinación segura de objetos, congelación y sellado»?
Combine objetos sin sorpresas, evite la contaminación del prototipo y proteja los datos con Object.freeze y Object.seal. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar JavaScript Academy?
No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.
¿Cuánto tiempo toma la lección «Combinación segura de objetos, congelación y sellado»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?
Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Validación de entradas y fundamentos del escape
- Combinación segura de objetos, congelación y sellado
- Límites de errores (conceptuales) sin frameworks