diff options
| author | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:45:38 +0100 |
|---|---|---|
| committer | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:45:38 +0100 |
| commit | 4ab365b110f2f1f2b736326b7059244a32115089 (patch) | |
| tree | c3c7c0219f728ade49a78c238c51cc0c8d06ebd6 /files/de/web/javascript/reference/errors/cyclic_object_value | |
| parent | 8260a606c143e6b55a467edf017a56bdcd6cba7e (diff) | |
| download | translated-content-4ab365b110f2f1f2b736326b7059244a32115089.tar.gz translated-content-4ab365b110f2f1f2b736326b7059244a32115089.tar.bz2 translated-content-4ab365b110f2f1f2b736326b7059244a32115089.zip | |
unslug de: move
Diffstat (limited to 'files/de/web/javascript/reference/errors/cyclic_object_value')
| -rw-r--r-- | files/de/web/javascript/reference/errors/cyclic_object_value/index.html | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/files/de/web/javascript/reference/errors/cyclic_object_value/index.html b/files/de/web/javascript/reference/errors/cyclic_object_value/index.html new file mode 100644 index 0000000000..33bf4d508a --- /dev/null +++ b/files/de/web/javascript/reference/errors/cyclic_object_value/index.html @@ -0,0 +1,67 @@ +--- +title: 'TypeError: cyclic object value' +slug: Web/JavaScript/Reference/Fehler/Cyclic_object_value +tags: + - Error + - Errors + - JavaScript + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Cyclic_object_value +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Fehlermeldung">Fehlermeldung</h2> + +<pre class="syntaxbox">TypeError: cyclic object value (Firefox) +TypeError: Converting circular structure to JSON (Chrome and Opera) +TypeError: Circular reference in value argument not supported (Microsoft Edge) +</pre> + +<h2 id="Fehlertyp">Fehlertyp</h2> + +<p>{{jsxref("TypeError")}}</p> + +<h2 id="Was_ist_falsch_gelaufen">Was ist falsch gelaufen?</h2> + +<p>Wenn {{jsxref("JSON.stringify()")}} aufgerufen wird, kann eine zyklische Objektreferenzstruktur nicht zu eine String konvertiert werden.</p> + +<h2 id="Beispiele">Beispiele</h2> + +<p>In eine zyklischen Struktur wie folgender</p> + +<pre class="brush: js">var <code class="language-js">circularReference</code> = {otherData: 123}; +<code class="language-js">circularReference</code>.myself = <code class="language-js">circularReference</code>; +</pre> + +<p>wird {{jsxref("JSON.stringify()")}} nicht funktionieren</p> + +<pre class="brush: js example-bad">JSON.stringify(a); +// TypeError: cyclic object value +</pre> + +<p>Um zyklische Referenzen zu serialisieren, kann man eine Bibliotheken benutzen (z. B. <a href="https://github.com/douglascrockford/JSON-js/blob/master/cycle.js">cycle.js</a> von Douglas Crockford) oder eine eigene Lösung implementieren, welche zyklische Referenzen findet und mit serialisierbaren Werten ersetzt (oder diese entfernt).</p> + +<p>Das folgende Codebeispiel zeigt, wie man eine zyklische Referenz mit dem Einsatz des <code>replacer</code> Parameters von {{jsxref("JSON.stringify()")}} findet und filtert (das bedeutet, es gehen Daten verloren):</p> + +<pre class="brush: js">const getCircularReplacer = () => { + const seen = new WeakSet; + return (key, value) => { + if (typeof value === "object" && value !== null) { + if (seen.has(value)) { + return; + } + seen.add(value); + } + return value; + }; +}; + +JSON.stringify(<code class="language-js">circularReference</code>, getCircularReplacer()); +// {"otherData":123}</pre> + +<h2 id="Siehe_auch">Siehe auch</h2> + +<ul> + <li>{{jsxref("JSON.stringify")}}</li> + <li><a href="https://github.com/douglascrockford/JSON-js/blob/master/cycle.js">cycle.js</a> – Führt zwei Funktionen ein, <code>JSON.decycle</code> und <code>JSON.retrocycle</code>, welche es ermöglichen zyklische Strukturen aufzulösen, diese in JSON unterzubringen und sie wieder zu erstellen.</li> +</ul> |
