JavaScript Academy · leksjon

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.

Leksjon 2 av 38 trinn

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
Trygg sammenslåing av objekter; freezing og sealing — illustrasjon 1

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);
Trygg sammenslåing av objekter; freezing og sealing — illustrasjon 2

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);
Trygg sammenslåing av objekter; freezing og sealing — illustrasjon 3

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);
Trygg sammenslåing av objekter; freezing og sealing — illustrasjon 4

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);
Trygg sammenslåing av objekter; freezing og sealing — illustrasjon 5

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.
Trygg sammenslåing av objekter; freezing og sealing — illustrasjon 6

Grunnleggende quiz om prototype pollution

Hurtigsjekk: Tryggeste mål for upålitelige sammenslåinger.

Trygg sammenslåing av objekter; freezing og sealing — illustrasjon 7

Oppsummering

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

Trygg sammenslåing av objekter; freezing og sealing — illustrasjon 8
Gratis å komme i gang

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

  1. Inputvalidering og det grunnleggende om escaping
  2. Trygg sammenslåing av objekter; freezing og sealing
  3. Error boundaries (konseptuelt) uten rammeverk
← Tilbake til JavaScript Academy