diff options
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.html | 173 |
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> |
