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 , 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 Latest Draft (ECMA-262)
The definition of 'Relational Operators' in that specification.
Rascunho  
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 do navegador

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes1 Yes Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes4 Yes Yes Yes

Ver também

Etiquetas do documento e colaboradores

 Colaboradores desta página: colares
 Última atualização por: colares,