aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/global_objects/object/isfrozen/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/de/web/javascript/reference/global_objects/object/isfrozen/index.html')
-rw-r--r--files/de/web/javascript/reference/global_objects/object/isfrozen/index.html173
1 files changed, 173 insertions, 0 deletions
diff --git a/files/de/web/javascript/reference/global_objects/object/isfrozen/index.html b/files/de/web/javascript/reference/global_objects/object/isfrozen/index.html
new file mode 100644
index 0000000000..fedcba2572
--- /dev/null
+++ b/files/de/web/javascript/reference/global_objects/object/isfrozen/index.html
@@ -0,0 +1,173 @@
+---
+title: Object.isFrozen()
+slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen
+---
+<div>{{JSRef}}</div>
+
+<p><code><strong>Object.isFrozen()</strong></code> gibt an ob ein Objekt {{jsxref("Object.freeze()", "eingefroren", "", 1)}} ist.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/object-isfrozen.html")}}</div>
+
+
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox"><code>Object.isFrozen(<var>obj</var>)</code></pre>
+
+<h3 id="Parameter">Parameter</h3>
+
+<dl>
+ <dt><code>obj</code></dt>
+ <dd>Das Objekt, welches überprüft werden soll.</dd>
+</dl>
+
+<h3 id="Rückgabewert">Rückgabewert</h3>
+
+<p>Ein {{jsxref("Boolean")}}-Wert, der angibt ob das Objekt eingefroren ist oder nicht.</p>
+
+<h2 id="Beschreibung">Beschreibung</h2>
+
+<p>Ein Objekt gilt dann und nur dann als eingefroren, wenn es nicht {{jsxref("Object.isExtensible()", "erweiterbar", "", 1)}} ist, all seine Eigenschaften nicht konfigurierbar sind und all seine Daten-Eigenschaften (d.h. Eigenschaften die nicht durch Getter oder Setter definiert sind) nicht schreibbar sind.</p>
+
+<h2 id="Beispiele">Beispiele</h2>
+
+<pre class="brush: js">// Ein neues Objekt ist erweiterbar, also nicht eingefroren.
+Object.isFrozen({}); // === false
+
+// An leeres Objekt, das nicht erweiterbar ist,
+// ist sinnlos eingefroren.
+var sinnlos = Object.preventExtensions({});
+Object.isFrozen(sinnlos); // === true
+
+// Ein neues Objekt mit einer einzelnen Eigenschaft, ist auch erweiterbar,
+// ergo nicht eingefroren.
+var eineEigenschaft = { p: 42 };
+Object.isFrozen(eineEigenschaft); // === false
+
+// Das Objekt nicht erweiterbar zu machen, friert es nicht ein,
+// da die Eigenschaft immer nocht konfigurierbar und schreibbar ist.
+Object.preventExtensions(eineEigenschaft);
+Object.isFrozen(eineEigenschaft); // === false
+
+// ...wenn man die Eigenschaft aber löscht,
+// wird das Objekt sinnlos
+delete eineEigenschaft.p;
+Object.isFrozen(eineEigenschaft); // === true
+
+// Ein nicht erweiterbares Objekt, mit einer nicht schreibbaren
+// jedoch konifgurierbaren Eigenschaft gilt als nicht eingefroren.
+var nichtSchreibbar = { e: 'plep' };
+Object.preventExtensions(nichtSchreibbar);
+Object.defineProperty(nichtSchreibbar, 'e', {
+  writable: false
+}); // `e` wird nicht schreibbar
+Object.isFrozen(nichtSchreibbar); // === false
+
+// Wird diese Eigenschaft nicht konfigurierbar,
+// so friert das Objekt ein.
+Object.defineProperty(nichtSchreibbar, 'e', {
+  configurable: false
+}); // `e` wird nicht konfigurierbar
+Object.isFrozen(nichtSchreibbar); // === true
+
+// Ein nicht erweiterbares Objekt, mit einer nicht konfigurierbaren
+// jedoch schreibbaren Eigenschaft gilt ebenfalls als nicht eingefroren.
+var nichtKonfigurierbar = { release: 'the kraken!' };
+Object.preventExtensions(nichtKonfigurierbar);
+Object.defineProperty(nichtKonfigurierbar, 'release', {
+  configurable: false
+});
+Object.isFrozen(nichtKonfigurierbar); // === false
+
+// Wird diese Eigenschaft nicht schreibbar,
+// so friert das Objekt ein.
+Object.defineProperty(nichtKonfigurierbar, 'release', {
+  writable: false
+});
+Object.isFrozen(nichtKonfigurierbar); // === true
+
+// Ein nicht erweiterbares Objekt, mit einer konfigurierbaren
+// dynamischen Eigenschaft (get/set) ist nicht eingefroren.
+var dynamisch = { get food() { return 'yum'; } };
+Object.preventExtensions(dynamisch);
+Object.isFrozen(dynamisch); // === false
+
+// ABER, wird diese Eigenschaft nicht konfigurierbar,
+// friert das Objekt ein.
+Object.defineProperty(dynamisch, 'food', {
+  configurable: false
+});
+Object.isFrozen(dynamisch); // === true
+
+// Am Ende ist die einfachste Methode um ein Objekt einzufrieren,
+// Object.freeze aufzurufen.
+var eingefroren = { 1: 81 };
+Object.isFrozen(eingefroren); // === false
+Object.freeze(eingefroren);
+Object.isFrozen(eingefroren); // === true
+
+// Per Definition ist ein eingefrorenes Objekt nicht erweiterbar.
+Object.isExtensible(eingefroren); // === false
+
+// Und es ist ebenfalls versiegelt.
+Object.isSealed(eingefroren); // === true
+</pre>
+
+<h2 id="Anmerkungen">Anmerkungen</h2>
+
+<p>In ES5, wirft die Methode einen {{jsxref("TypeError")}}, wenn der Parameter kein primitives Objekt ist.</p>
+
+<p>In ES2015 wird der Parameter, sollte er kein primitives Objekt sein, als bereits eingefrorenes Objekt betrachtet und gibt dementsprechend einfach <code>true</code> zurück.</p>
+
+<pre class="brush: js">Object.isFrozen(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isFrozen(1);
+// true (ES2015 code)
+</pre>
+
+<h2 id="Spezifikationen">Spezifikationen</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spezifikation</th>
+ <th scope="col">Status</th>
+ <th scope="col">Kommentar</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td>Initiale Definition. In JavaScript 1.8.5 implementiert.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-object.isfrozen', 'Object.isFrozen')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.isfrozen', 'Object.isFrozen')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_Kompatibilität">Browser Kompatibilität</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Object.isFrozen")}}</p>
+</div>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<ul>
+ <li>{{jsxref("Object.freeze()")}}</li>
+ <li>{{jsxref("Object.preventExtensions()")}}</li>
+ <li>{{jsxref("Object.isExtensible()")}}</li>
+ <li>{{jsxref("Object.seal()")}}</li>
+ <li>{{jsxref("Object.isSealed()")}}</li>
+</ul>