aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/errors/no_non-null_object/index.html
blob: 41be7379df3c31913d2fdc513cd7b7d594297bb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
---
title: 'TypeError: "x" is not a non-null object'
slug: Web/JavaScript/Reference/Errors/No_non-null_object
tags:
  - Error
  - Errors
  - JavaScript
  - TypeError
translation_of: Web/JavaScript/Reference/Errors/No_non-null_object
original_slug: Web/JavaScript/Reference/Fehler/No_non-null_object
---
<div>{{JSSidebar("Errors")}}</div>

<h2 id="Fehlermeldung">Fehlermeldung</h2>

<pre class="syntaxbox">TypeError: "x" is not a non-null object (Firefox)
TypeError: Property description must be an object: "x" (Chrome)
TypeError: Invalid value used in weak set (Chrome)
</pre>

<h2 id="Fehlertyp">Fehlertyp</h2>

<p>{{jsxref("TypeError")}}</p>

<h2 id="Was_ist_falsch_gelaufen">Was ist falsch gelaufen?</h2>

<p>Ein Objekt wird erwartete aber nicht übergeben. {{jsxref("null")}} ist kein Objekt und funktioniert nicht. In dieser Situation wird ein normales Objekt erwartet.</p>

<h2 id="Beispiele">Beispiele</h2>

<h3 id="Eigehscgaftsbeschreibung_erwartet">Eigehscgaftsbeschreibung erwartet</h3>

<p>Wenn Methoden wie {{jsxref("Object.create()")}} oder {{jsxref("Object.defineProperty()")}} und {{jsxref("Object.defineProperties()")}} eingesetzt werden, wird als optionale Beschreibung ein Beschreibungsobjekt erwartet. Wenn kein Objekt übergeben wird (z. B. eine Zahl), wird ein Fehler erzeugt:</p>

<pre class="brush: js example-bad">Object.defineProperty({}, 'key', 1);
// TypeError: 1 is not a non-null object

Object.defineProperty({}, 'key', null);
// TypeError: null is not a non-null object
</pre>

<p>Ein valides Beschreibungsobjekt kann wie folgendes aussehen:</p>

<pre class="brush: js example-good">Object.defineProperty({}, 'key', { value: 'foo', writable: false });
</pre>

<h3 id="WeakMap_und_WeakSet_Objekte_benötigen_Objektschlüssel"><code>WeakMap</code> und <code>WeakSet</code> Objekte benötigen Objektschlüssel</h3>

<p>{{jsxref("WeakMap")}} und {{jsxref("WeakSet")}} Objekte speichern Objektschlüssel. Man kann keine anderen Schlüssel verwenden.</p>

<pre class="brush: js example-bad">var ws = new WeakSet();
ws.add('foo');
// TypeError: "foo" is not a non-null object</pre>

<p>Stattdessen sollte folgendes verwendet werden:</p>

<pre class="brush: js example-good">ws.add({foo: 'bar'});
ws.add(window);
</pre>

<h2 id="Siehe_auch">Siehe auch</h2>

<ul>
 <li>{{jsxref("Object.create()")}}</li>
 <li>{{jsxref("Object.defineProperty()")}}, {{jsxref("Object.defineProperties()")}}</li>
 <li>{{jsxref("WeakMap")}}, {{jsxref("WeakSet")}}</li>
</ul>