Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Die statische Methode Object.seal() versiegelt ein Objekt. Das Versiegeln eines Objekts verhindert Erweiterungen und macht vorhandene Eigenschaften nicht konfigurierbar. Ein versiegeltes Objekt verfügt über einen festen Satz von Eigenschaften: Neue Eigenschaften können nicht hinzugefügt werden, bestehende Eigenschaften können nicht entfernt werden, ihre Aufzählbarkeit und Konfigurierbarkeit können nicht geändert werden, und sein Prototyp kann nicht neu zugewiesen werden. Die Werte bestehender Eigenschaften können weiterhin geändert werden, solange sie beschreibbar sind. seal() gibt dasselbe Objekt zurück, das übergeben wurde.
Das Objekt, das versiegelt werden soll.
Das Objekt, das versiegelt wird.
Das Versiegeln eines Objekts entspricht dem Verhindern von Erweiterungen und dann dem Ändern aller vorhandenen Eigenschaftsdescriptoren zu configurable: false. Dies hat zur Folge, dass der Satz von Eigenschaften des Objekts feststeht. Wenn alle Eigenschaften nicht konfigurierbar sind, können sie nicht von Dateneigenschaften zu Accessoreigenschaften und umgekehrt konvertiert werden, aber es wird nicht verhindert, dass die Werte der Dateneigenschaften geändert werden. Der Versuch, Eigenschaften eines versiegelten Objekts zu löschen oder hinzuzufügen oder eine Dateneigenschaft in einen Accessor zu konvertieren oder umgekehrt, schlägt fehl, entweder stillschweigend oder durch das Auslösen eines TypeError (meistens, aber nicht ausschließlich, wenn Code im strict mode ausgeführt wird).
Private Elemente sind keine Eigenschaften und haben kein Konzept von Eigenschaftsdescriptoren. Private Elemente können weder hinzugefügt noch aus dem Objekt entfernt werden, unabhängig davon, ob das Objekt versiegelt ist oder nicht.
Die Prototypenkette bleibt unberührt. Aufgrund der Wirkung des Verhinderns von Erweiterungen kann das [[Prototype]] jedoch nicht neu zugewiesen werden.
Im Gegensatz zu Object.freeze() können bei Objekten, die mit Object.seal() versiegelt wurden, bestehende Eigenschaften geändert werden, solange sie beschreibbar sind.
In ES5 führt das Argument dieser Methode, wenn es sich nicht um ein Objekt (ein primitiver Wert) handelt, zu einem TypeError. In ES2015 wird ein Nicht-Objekt-Argument unverändert ohne Fehler zurückgegeben, da primitive Werte per Definition bereits unveränderlich sind.
| ECMAScript® 2027 Language Specification # sec-object.seal |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.