0Pricing
JavaScript Academy · Lektion

object.freeze und seal

Verhindern Sie Änderungen an Objekten.

object.freeze und seal ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Objekte einfrieren?

Unveränderlichkeit bedeutet, dass sich Daten nach ihrer Erstellung nicht mehr ändern können. Sie verhindert versehentliche Mutationen, erleichtert das Nachvollziehen von Code und vermeidet ganze Klassen von Fehlern.

JavaScript stellt Ihnen Object.freeze und Object.seal zur Verfügung, um Objekte zu sperren.

Grundlagen von Object.freeze

Object.freeze macht ein Objekt vollständig schreibgeschützt: Sie können keine Eigenschaften hinzufügen, entfernen oder ändern. Die Funktion gibt dasselbe Objekt zurück, das nun eingefroren ist.

const user = Object.freeze({ name: 'Ada', age: 36 });
user.age = 99;
console.log(user.age);

Prüfen mit isFrozen

Object.isFrozen gibt an, ob ein Objekt eingefroren ist. Das ist nützlich, bevor Sie eine Aktualisierung versuchen.

const config = Object.freeze({ debug: false });
const settings = { theme: 'dark' };

console.log(Object.isFrozen(config));
console.log(Object.isFrozen(settings));

Stilles oder striktes Fehlschlagen

In nicht-striktem Code schlagen Schreibzugriffe auf ein eingefrorenes Objekt lautlos fehl. Im Strict-Modus lösen sie einen TypeError aus. In beiden Fällen ändert sich der Wert nicht.

'use strict';
const frozen = Object.freeze({ x: 1 });
try {
  frozen.x = 2;
} catch (e) {
  console.log(e.name);
}
console.log(frozen.x);

Freeze verhindert neue Eigenschaften

Das Einfrieren verhindert außerdem das Hinzufügen von Eigenschaften. Der neue Schlüssel erscheint einfach nicht.

const point = Object.freeze({ x: 0 });
point.y = 5;
console.log(point.y);
console.log(Object.keys(point));

Freeze verhindert das Löschen

Sie können auch keine Eigenschaften aus einem eingefrorenen Objekt löschen. Die Eigenschaft bleibt bestehen.

const obj = Object.freeze({ keep: 'me' });
delete obj.keep;
console.log(obj.keep);

Object.seal ist anders

Object.seal ist weniger strikt als Freeze. Sie können keine Eigenschaften hinzufügen oder entfernen, aber vorhandene Werte weiterhin ändern.

const sealed = Object.seal({ count: 1 });
sealed.count = 2;
sealed.extra = 3;

console.log(sealed.count);
console.log(sealed.extra);

Prüfen mit isSealed

Object.isSealed gibt an, ob ein Objekt versiegelt ist. Beachten Sie, dass jedes eingefrorene Objekt auch versiegelt ist, aber nicht umgekehrt.

const sealed = Object.seal({ a: 1 });
const frozen = Object.freeze({ b: 2 });

console.log(Object.isSealed(sealed));
console.log(Object.isSealed(frozen));
console.log(Object.isFrozen(sealed));

Zusammenfassung: freeze und seal

freeze: nichts hinzufügen, nichts entfernen, nichts ändern. seal: nichts hinzufügen, nichts entfernen, Änderungen aber erlaubt. Verwenden Sie seal, wenn die Struktur feststeht, sich die Werte aber weiterentwickeln.

const f = Object.freeze({ v: 1 });
const s = Object.seal({ v: 1 });

f.v = 100;
s.v = 100;

console.log('frozen v:', f.v);
console.log('sealed v:', s.v);

preventExtensions

Die lockerste Sperre ist Object.preventExtensions: Sie können keine Eigenschaften hinzufügen, aber vorhandene Eigenschaften ändern und löschen. Dies ist die schwächste der drei Varianten.

const obj = Object.preventExtensions({ a: 1 });
obj.a = 2;
obj.b = 3;

console.log(obj.a);
console.log(obj.b);
console.log(Object.isExtensible(obj));

Warum das wichtig ist

Das Einfrieren von Konfigurationen und Konstanten verhindert versehentliche Änderungen in der gesamten Codebasis. Denken Sie aber daran: Object.freeze ist oberflächlich, verschachtelte Objekte bleiben also veränderbar. Als Nächstes beheben Sie dieses Problem.

const SETTINGS = Object.freeze({ maxRetries: 3 });
function tryUpdate() {
  SETTINGS.maxRetries = 10;
}
tryUpdate();
console.log(SETTINGS.maxRetries);

Kurze Überprüfung

Was ist der Unterschied zwischen Object.freeze und Object.seal?

Zusammenfassung: freeze und seal

Sie haben gelernt, Objekte zu sperren:

  • Object.freeze: nichts hinzufügen, entfernen oder ändern. Prüfen Sie dies mit isFrozen.
  • Object.seal: nichts hinzufügen oder entfernen, Änderungen aber erlaubt.
  • preventExtensions: verhindert nur das Hinzufügen.
  • Alle drei Varianten sind oberflächlich. Als Nächstes geht es daher um tiefes Einfrieren.

Häufig gestellte Fragen

Ist die Lektion „object.freeze und seal“ kostenlos?

Ja — der vollständige Text von „object.freeze und seal“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „object.freeze und seal“?

Verhindern Sie Änderungen an Objekten. Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um JavaScript Academy zu starten?

Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „object.freeze und seal“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. object.freeze und seal
  2. Flaches und tiefes Einfrieren
  3. Muster für unveränderliche Updates
  4. structuredClone für tiefe Kopien
← Zurück zu JavaScript Academy