in operator
O operador in
retorna true
se a propriedade especificada estiver no objeto especificado ou na sua cadeia de protótipo (prototype chain) desde objeto.
Sintaxe
prop in object
Parâmetros
prop
-
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).
object
-
Objeto para verificar se este (ou sua cadeia de protótipo) contém a propriedade com o nome especificado.
Descrição
Os exemplos a seguir mostram alguns usos do operador in
.
// 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
Você precisa especificar um objeto no lado direito do operador in
. Por exemplo, você pode especifica um string criado com o construtor String
, mas você não pode especificar um string literal.
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
Usando in
com propriedade removida ou undefined
Se você remover uma propriedade com o operador delete
(en-US) , o operador in
retorna false
para essa propriedade.
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
Se você definir uma propriedade como undefined
, mas não a remover, o operador in
retorna true
para essa propriedade.
var mycar = {make: 'Honda', model: 'Accord', year: 1998};
mycar.make = undefined;
'make' in mycar; // retorna true
var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
trees[3] = undefined;
3 in trees; // retorna true
Propriedades herdadas
O operador in
retorna true
para propriedades que estão na cadeida de protótipo (prototype chain).
'toString' in {}; // retorna true
Especificações
Especificação | Situação | Comentário |
---|---|---|
ECMAScript (ECMA-262) The definition of 'Relational Operators' in that specification. |
Padrão em tempo real | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Relational Operators' in that specification. |
Padrão | |
ECMAScript 5.1 (ECMA-262) The definition of 'The in Operator' in that specification. |
Padrão | |
ECMAScript 3rd Edition (ECMA-262) The definition of 'The in Operator' in that specification. |
Padrão | Definição inicial. Implementado no JavaScript 1.4. |
Compatibilidade com navegadores
BCD tables only load in the browser