Trygg sammenslåing av objekter; freezing og sealing
Slå sammen objekter uten overraskelser, unngå prototype pollution og beskytt data med Object.freeze og Object.seal.
Trygg sammenslåing av objekter; freezing og sealing er en gratis leksjon i JavaScript Academy på CoddyKit. Dette er leksjon 2 av 3. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i JavaScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i JavaScript Academy inneholder totalt 3 leksjoner.
Hvorfor trygg sammenslåing?
Mål: Slå sammen på en trygg måte og beskytte tilstanden.
- Grunn sammenslåing med spread eller Object.assign
- Unngå prototype pollution ved å filtrere nøkler
- Bruk Object.create(null) som trygge målobjekter
- Bruk freeze og seal for å låse objekter

Grunn sammenslåing (spread)
Bruk spread (eller Object.assign({}, a, b)) for å lage et nytt objekt. Ikke endre inndataene.
// 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);

Unngå prototype pollution
Når nøkler kommer utenfra, skriv en liten allowlist/denylist og bruk Object.create(null) som målobjekt.
// 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);

Klon og tilordne
Object.assign({}, ...) er et trygt mønster som nybegynnere lett kan lese.
// 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 kontra seal
freeze blokkerer alle endringer. seal blokkerer tillegg og fjerning, men tillater oppdatering av eksisterende egenskaper.
// 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);

Trygge vaner ved sammenslåing
Tips:
- Foretrekk nye objekter: {...a, ...b} eller Object.assign({}, a, b).
- For upålitelige nøkler: bruk Object.create(null) og hopp over __proto__, prototype og constructor.
- Beskytt konfigurasjoner med Object.freeze, og beskytt modeller med Object.seal.

Grunnleggende quiz om prototype pollution
Hurtigsjekk: Tryggeste mål for upålitelige sammenslåinger.

Oppsummering
Oppsummering: Slå sammen ved å opprette nye objekter, filtrer upålitelige nøkler, og bruk freeze/seal for å beskytte viktige datastrukturer.

Lær deg JavaScript med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 59
- Leksjoner
- 200
Ofte stilte spørsmål
Er leksjonen «Trygg sammenslåing av objekter; freezing og sealing» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien JavaScript Academy, inkludert «Trygg sammenslåing av objekter; freezing og sealing», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i JavaScript Academy inneholder totalt 3 leksjoner.
Hva lærer jeg i «Trygg sammenslåing av objekter; freezing og sealing»?
Slå sammen objekter uten overraskelser, unngå prototype pollution og beskytt data med Object.freeze og Object.seal. Du øver på JavaScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med JavaScript Academy?
Ingen tidligere erfaring er nødvendig. JavaScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 3.
Hvor lang tid tar leksjonen «Trygg sammenslåing av objekter; freezing og sealing»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne JavaScript Academy-leksjonen?
Ja. Alle JavaScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Inputvalidering og det grunnleggende om escaping
- Trygg sammenslåing av objekter; freezing og sealing
- Error boundaries (konseptuelt) uten rammeverk