Verifique se um valor é objeto em JavaScript

Hiten Kanwar 12 outubro 2023
  1. Use a função instanceof para verificar se um valor é um objeto ou não em JavaScript
  2. Use a função typeof() para verificar se um valor é um objeto ou não em JavaScript
  3. Use funções definidas pelo usuário para verificar se um valor é um objeto ou não em JavaScript
  4. Use o método getPrototypeOf() para verificar se um valor é um objeto ou não em JavaScript
Verifique se um valor é objeto em JavaScript

Em JavaScript, todo valor definido é um objeto ou um primitivo. Qualquer valor que não seja um objeto e não tenha nenhum método é conhecido como primitivo. Tudo o que não é primitivo é um objeto ou não.

Neste tutorial, verificaremos se um valor é um objeto ou não.

Use a função instanceof para verificar se um valor é um objeto ou não em JavaScript

Verificaremos o valor com a ajuda do método instanceof, que retorna o tipo de objeto em tempo de execução.

No exemplo a seguir, a função retornará true se o valor for de um tipo de objeto.

const test = {};
function isObject(val) {
  return val instanceof Object;
}
console.log(isObject(test));

Produção:

true

Mas esse método não funcionará para todos os casos. O isObject(Object.prototype) e isObject(Object.create(null)) retornará False.

Use a função typeof() para verificar se um valor é um objeto ou não em JavaScript

Podemos verificar o tipo de objetos usando a função typeof().

Por exemplo,

const test = {};
function isObject(val) {
  return (typeof val === 'object');
}
console.log(isObject(test));

Produção:

true

Este método também não funcionará para todos os casos de teste. Ele retornará falsos positivos para os casos de teste nulos e falsos negativos para funções. O isObject(Object) também retornará False.

Podemos também definir outra função usando esta função que irá resolver as limitações mencionadas acima.

Veja o código abaixo.

const test = {};
function t() {};
function isObject(val) {
  if (val === null) {
    return false;
  }
  return ((typeof val === 'function') || (typeof val === 'object'));
}
console.log(isObject(test));
console.log(isObject(t));

Produção:

true 
true

A função no exemplo acima retorna False se o valor for NULL. Se o valor for do tipo função ou tipo objeto, ele retorna verdadeiro. Caso contrário, retorna False.

Use funções definidas pelo usuário para verificar se um valor é um objeto ou não em JavaScript

Podemos definir mais dessas funções para realizar o trabalho com base no construtor e na classe do objeto.

Por exemplo,

const test = {};
function isObject(obj) {
  return obj === Object(obj);
}
function isObject2(obj) {
  return obj.constructor.toString().indexOf('Object') > -1;
}
console.log(isObject(test));
console.log(isObject2(test));

Produção:

true
true

No exemplo acima, criamos duas funções que podem verificar se o valor fornecido é um objeto.

Use o método getPrototypeOf() para verificar se um valor é um objeto ou não em JavaScript

O método getPrototypeOf lançará uma exceção se seu argumento não for um objeto. Podemos usá-lo para verificar o tipo de classe do valor fornecido.

Por exemplo,

const test = {};
const object1 = Object.create(test);
console.log(Object.getPrototypeOf(object1) === test);

Produção:

true

Artigo relacionado - JavaScript Object