Resumo : neste tutorial você aprenderá como verificar se existe uma propriedade em um objeto.
JavaScript fornece três maneiras comuns de verificar se uma propriedade existe em um objeto:
- Use o
hasOwnProperty()
método. - Use o
in
operador. - Compare a propriedade com
undefined
.
Use o método hasOwnProperty()
O JavaScript Object.prototype
possui o método hasOwnProperty()
que retorna true
se existir uma propriedade em um objeto:
let result = targetObject.hasOwnProperty(propertyName);
Linguagem de código: JavaScript ( javascript )
O exemplo a seguir declara um person
objeto:
let person = {
firstName: 'John',
lastName: 'Doe'
};
Linguagem de código: JavaScript ( javascript )
E o seguinte usa o hasOwnProperty()
método para verificar se a firstName
propriedade existe no person
objeto:
let result = person.hasOwnProperty('firstName');
console.log(result); // true
Linguagem de código: JavaScript ( javascript )
Porém, a age
propriedade não existe no objeto pessoa, portanto, o seguinte código retorna false
:
let result = person.hasOwnProperty('age');
console.log(result); // false
Linguagem de código: JavaScript ( javascript )
Observe que hasOwnProperty()
procura a propriedade nas próprias propriedades do objeto.
Por exemplo, todos os objetos herdam a toString
propriedade de Object
, o método hasOwnProperty() não a detecta como uma propriedade:
let result = person.hasOwnProperty('toString');
console.log(result); // false
Linguagem de código: JavaScript ( javascript )
Use o operador in
O in
operador retorna true
se existir uma propriedade em um objeto. Se uma propriedade não existir no objeto, ela retornará false
.
propertyName in targetObject
O exemplo a seguir usa o in
operador para verificar se as propriedades firstName
e age
existem no person
objeto:
let person = {
firstName: 'John',
lastName: 'Doe'
};
let result = 'firstName' in person;
console.log(result); // true
result = 'age' in person;
console.log(result); // false
Linguagem de código: JavaScript ( javascript )
Ao contrário do hasOwnProperty()
método, o in
operador procura a propriedade tanto nas propriedades próprias quanto nas propriedades herdadas do objeto.
O exemplo a seguir usa o in
operador para verificar se a toString
propriedade existe no person
objeto. Ele retorna true
porque the toString
é uma propriedade herdada do person
objeto.
let person = {
firstName: 'John',
lastName: 'Doe'
};
let result = 'toString' in person;
console.log(result); // true
Linguagem de código: JavaScript ( javascript )
Comparando a propriedade com indefinida
Ao acessar uma propriedade inexistente de um objeto, você obterá undefined
. Portanto, você pode comparar a propriedade com para undefined
verificar se existe uma propriedade em um objeto:
let person = {
firstName: 'John',
lastName: 'Doe'
};
let result = person.firstName !== undefined;
console.log(result); // true
Linguagem de código: JavaScript ( javascript )
Se um objeto tiver uma propriedade cujo valor seja undefined
, comparar a propriedade com undefined
retornará um resultado incorreto. Por exemplo:
let person = {
firstName: 'John',
lastName: 'Doe',
age: undefined
};
let result = person.age !== undefined;
console.log(result); // false
Linguagem de código: JavaScript ( javascript )
Neste exemplo, a age
propriedade existe no person
objeto. No entanto, seu valor inicial é undefined
. Portanto, comparando person.age
com os undefined
retornos false
, o que não é esperado.
Resumo
- Use o
hasOwnProperty()
método para verificar se existe uma propriedade nas próprias propriedades de um objeto. - Use o
in
operador para verificar se existe uma propriedade tanto nas propriedades próprias quanto nas propriedades herdadas de um objeto. - Compare a propriedade com
undefined
para verificar se uma propriedade existe somente quando você tiver certeza de que o valor inicial da propriedade não éundefined
.