3 maneiras de verificar se existe uma propriedade em um objeto

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 inoperador.
  • Compare a propriedade com undefined.

Use o método hasOwnProperty()

O JavaScript Object.prototypepossui o método hasOwnProperty()que retorna truese existir uma propriedade em um objeto:

let result = targetObject.hasOwnProperty(propertyName);Linguagem de código:  JavaScript  ( javascript )

O exemplo a seguir declara um personobjeto:

let person = {
   firstName: 'John',
   lastName: 'Doe'
};Linguagem de código:  JavaScript  ( javascript )

E o seguinte usa o hasOwnProperty()método para verificar se a firstNamepropriedade existe no personobjeto:

let result = person.hasOwnProperty('firstName');
console.log(result); // trueLinguagem de código:  JavaScript  ( javascript )

Porém, a agepropriedade não existe no objeto pessoa, portanto, o seguinte código retorna false:

let result = person.hasOwnProperty('age');
console.log(result); // falseLinguagem de código:  JavaScript  ( javascript )

Observe que hasOwnProperty()procura a propriedade nas próprias propriedades do objeto.

Por exemplo, todos os objetos herdam a toStringpropriedade de Object, o método hasOwnProperty() não a detecta como uma propriedade:

let result = person.hasOwnProperty('toString'); 
console.log(result); // falseLinguagem de código:  JavaScript  ( javascript )

Use o operador in

O inoperador retorna truese 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 inoperador para verificar se as propriedades firstNamee ageexistem no personobjeto:

let person = {
   firstName: 'John',
   lastName: 'Doe'
};

let result = 'firstName' in person; 
console.log(result); // true

result = 'age' in person;
console.log(result); // falseLinguagem de código:  JavaScript  ( javascript )

Ao contrário do hasOwnProperty()método, o inoperador procura a propriedade tanto nas propriedades próprias quanto nas propriedades herdadas do objeto.

O exemplo a seguir usa o inoperador para verificar se a toStringpropriedade existe no personobjeto. Ele retorna trueporque the toStringé uma propriedade herdada do personobjeto.

let person = {
   firstName: 'John',
   lastName: 'Doe'
};

let result = 'toString' in person;
console.log(result); // trueLinguagem 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 undefinedverificar se existe uma propriedade em um objeto:

let person = {
   firstName: 'John',
   lastName: 'Doe'
};

let result = person.firstName !== undefined;
console.log(result); // trueLinguagem de código:  JavaScript  ( javascript )

Se um objeto tiver uma propriedade cujo valor seja undefined, comparar a propriedade com undefinedretornará um resultado incorreto. Por exemplo:

let person = {
   firstName: 'John',
   lastName: 'Doe',
   age: undefined
};

let result = person.age !== undefined;
console.log(result); // falseLinguagem de código:  JavaScript  ( javascript )

Neste exemplo, a agepropriedade existe no personobjeto. No entanto, seu valor inicial é undefined. Portanto, comparando person.agecom os undefinedretornos 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 inoperador para verificar se existe uma propriedade tanto nas propriedades próprias quanto nas propriedades herdadas de um objeto.
  • Compare a propriedade com undefinedpara verificar se uma propriedade existe somente quando você tiver certeza de que o valor inicial da propriedade não é undefined.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *