aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/javascript/reference/operators/in/index.html
blob: ebda32f1ab0a0eba94f267257c63092013de1f63 (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
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
---
title: in operator
slug: Web/JavaScript/Reference/Operators/in
translation_of: Web/JavaScript/Reference/Operators/in
---
<div>{{jsSidebar("Operators")}}</div>

<p>O <strong>operador</strong> <strong><code>in</code> </strong>retorna  <code>true</code> se a propriedade especificada estiver no objeto especificado ou na sua cadeia de protótipo (prototype chain) desde objeto.</p>

<h2 id="Sintaxe">Sintaxe</h2>

<pre class="syntaxbox"><em>prop</em> in <em>object</em></pre>

<h3 id="Parâmetros">Parâmetros</h3>

<dl>
 <dt><code>prop</code></dt>
 <dd>Um string ou símbolo representando o nome de uma propriedade ou o índice de um array (não-símbolos serão trazidos para strings).</dd>
</dl>

<dl>
 <dt><code>object</code></dt>
 <dd>Objeto para verificar se este (ou sua cadeia de protótipo) contém a propriedade com o nome especificado.</dd>
</dl>

<h2 id="Descrição">Descrição</h2>

<p>Os exemplos a seguir mostram alguns usos do operador <code>in</code>.</p>

<pre class="brush:js">// Arrays
var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
0 in trees        // retorna true
3 in trees        // retorna true
6 in trees        // retorna false
'bay' in trees    // retorna false (você precisa especificar o
                  // número do índice, não o valor naquele índice)
'length' in trees // retorna true (length é uma propridade do Array)
Symbol.iterator in trees // retorna true (arrays são iteráveis, funciona apenas na ES2015+)

// Objetos predefinidos
'PI' in Math          // retorna true

// Objetos personalizados
var mycar = {make: 'Honda', model: 'Accord', year: 1998};
'make' in mycar  // retorna true
'model' in mycar // retorna true
</pre>

<p>Você precisa especificar um objeto no lado direito do operador <code>in</code>. Por exemplo, você pode especifica um string criado com o construtor <code>String,</code> mas você não pode especificar um string literal.</p>

<pre class="brush:js">var color1 = new String('green');
'length' in color1 // retorna true

var color2 = 'coral';
// gera um erro (color2 não é um objeto String)
'length' in color2
</pre>

<h3 id="Usando_in_com_propriedade_removida_ou_undefined">Usando <code>in</code> com propriedade removida ou undefined</h3>

<p>Se você remover uma propriedade com o operador <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete">delete</a></code> , o operador <code>in</code> retorna <code>false</code> para essa propriedade.</p>

<pre class="brush:js">var mycar = {make: 'Honda', model: 'Accord', year: 1998};
delete mycar.make;
'make' in mycar;  // retorna false

var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
delete trees[3];
3 in trees; // retorna false
</pre>

<p>Se você definir uma propriedade como {{jsxref("Global_Objects/undefined", "undefined")}}, mas não a remover, o operador <code>in</code> retorna <code>true</code> para essa propriedade.</p>

<pre class="brush:js">var mycar = {make: 'Honda', model: 'Accord', year: 1998};
mycar.make = undefined;
'make' in mycar;  // retorna true
</pre>

<pre class="brush:js">var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
trees[3] = undefined;
3 in trees; // retorna true
</pre>

<h3 id="Propriedades_herdadas">Propriedades herdadas</h3>

<p>O operador <code>in</code> retorna <code>true</code> para propriedades que estão na cadeida de protótipo (prototype chain).</p>

<pre class="brush:js">'toString' in {}; // retorna true
</pre>

<h2 id="Especificações">Especificações</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Especificação</th>
   <th scope="col">Situação</th>
   <th scope="col">Comentário</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>Definição inicial. Implementado no JavaScript 1.4.</td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2>



<p>{{Compat("javascript.operators.in")}}</p>

<h2 id="Ver_também">Ver também</h2>

<ul>
 <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code></li>
 <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete">delete</a></code></li>
 <li>{{jsxref("Object.prototype.hasOwnProperty()")}}</li>
 <li>{{jsxref("Reflect.has()")}}</li>
 <li><a href="/en-US/docs/Enumerability_and_ownership_of_properties">Enumerability and ownership of properties</a></li>
</ul>