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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
---
title: in operator
slug: Web/JavaScript/Reference/Operators/in
tags:
- JavaScript
- Operator
- Relational Operators
translation_of: Web/JavaScript/Reference/Operators/in
---
<div>{{jsSidebar("Operators")}}</div>
<p>Der <strong>in operator</strong> gibt true zurück, falls die gegebene Eigenschaft im gegebenen Objekt existiert.</p>
<div>{{EmbedInteractiveExample("pages/js/expressions-inoperator.html")}}</div>
<h2 id="Syntax">Syntax</h2>
<pre class="syntaxbox"><em>prop</em> in <em>object</em></pre>
<h3 id="Parameter">Parameter</h3>
<dl>
<dt><code>prop</code></dt>
<dd>Ein String oder Symbol welches einen Namen einer Eigenschaft oder einen Arrayindex (nicht Symbole werden in einen String konvertiert).</dd>
</dl>
<dl>
<dt><code>object</code></dt>
<dd>Objekt, bei welchem überprüft wird, ob eine Eigenschaft mit spezifiziertem Namen enthalten ist (oder in der Prototypenkette enthalten ist).</dd>
</dl>
<h2 id="Beschreibung">Beschreibung</h2>
<p>Die folgenden Beispiele zeigen einige Verwendungen des Operators</p>
<pre class="brush:js">// Arrays
var trees = ["redwood", "bay", "cedar", "oak", "maple"];
0 in trees // gibt true zurück
3 in trees // gibt true zurück
6 in trees // gibt false zurück
"bay" in trees // gibt false zurück (man muss den Index
// spezifizieren, nicht den Wert an dem Index)
"length" in trees // gibt true (length ist eine Eigenschaft von Array
Symbol.iterator in trees // gibt true zurück (Arrays sind iterable, funktioniert nur in ES2015+))
// Vordefinierte Objekte
"PI" in Math // gibt true zurück
// Eigene Objekte
var mycar = {make: "Honda", model: "Accord", year: 1998};
"make" in mycar // gibt true zurück
"model" in mycar // gibt true zurück
</pre>
<p>Man muss auf der rechten Seite des <code>in</code> Operators ein Objekt benutzen. Zum Beispiel kann ein String, der durch einen Konstruktor erstellt wurde, benutzt werden, jedoch funktioniert kein Stringliteral.</p>
<pre class="brush:js">var color1 = new String("green");
"length" in color1 // gibt true zurück
var color2 = "coral";
// erzeugt einen Fehler (color2 ist kein String Objekt)
"length" in color2
</pre>
<h3 id="Einsatz_von_in_mit_gelöschten_oder_undefined_Eigenschaften.">Einsatz von <code>in</code> mit gelöschten oder undefined Eigenschaften.</h3>
<p>Wenn eine Eigenschaft mit dem <code><a href="/de/docs/Web/JavaScript/Reference/Operators/delete" title="en-US/docs/JavaScript/Reference/Operators/Special/delete">delete</a></code> Operator gelöscht wird, wird der <code>in</code> für diese Eigenschaft <code>false</code> zurückgeben.</p>
<pre class="brush:js">var mycar = {make: "Honda", model: "Accord", year: 1998};
delete mycar.make;
"make" in mycar; // gibt false zurück
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
delete trees[3];
3 in trees; // gibt false zurück
</pre>
<p>Wenn eine Eigenschaft auf {{jsxref("Global_Objects/undefined", "undefined")}} gesetzt wird, aber nicht gelöscht wird, wird der <code>in</code> Operator <code>true</code> zurückgeben.</p>
<pre class="brush:js">var mycar = {make: "Honda", model: "Accord", year: 1998};
mycar.make = undefined;
"make" in mycar; // gibt true zurück
</pre>
<pre class="brush:js">var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
trees[3] = undefined;
3 in trees; // gibt true zurück
</pre>
<h3 id="Vererbte_Eigenschaften">Vererbte Eigenschaften</h3>
<p>Der <code>in</code> Operator gibt <code>true</code> für Eigenschaften in der Prototype-Kette zurück.</p>
<pre class="brush:js">"toString" in {}; // gibt true zurück
</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('ESDraft', '#sec-relational-operators', 'Relational Operators')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES2015', '#sec-relational-operators', 'Relational Operators')}}</td>
<td>{{Spec2('ES2015')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-11.8.7', 'The in Operator')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES3', '#sec-11.8.7', 'The in Operator')}}</td>
<td>{{Spec2('ES3')}}</td>
<td>Initiale Definition. Implementiert in JavaScript 1.4.</td>
</tr>
</tbody>
</table>
<h2 id="Browserkompatibilität">Browserkompatibilität</h2>
<p>{{Compat("javascript.operators.in")}}</p>
<h2 id="Siehe_auch">Siehe auch</h2>
<ul>
<li><code><a href="/de/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code></li>
<li><code><a href="/de/docs/Web/JavaScript/Reference/Operators/delete" title="en-US/docs/JavaScript/Reference/Operators/Special/delete">delete</a></code></li>
<li>{{jsxref("Object.prototype.hasOwnProperty()")}}</li>
<li>{{jsxref("Reflect.has()")}}</li>
<li><a href="de/docs/Web/JavaScript/Aufzählbarkeit_und_Zugehörigkeit_von_Eigenschaften" title="/en-US/docs/Enumerability_and_ownership_of_properties">Aufzählbarkeit und Zugehörigkeit von Eigenschaften</a></li>
</ul>
|