Verifique se um valor é objeto em JavaScript
-
Use a função
instanceof
para verificar se um valor é um objeto ou não em JavaScript -
Use a função
typeof()
para verificar se um valor é um objeto ou não em JavaScript - Use funções definidas pelo usuário para verificar se um valor é um objeto ou não em JavaScript
-
Use o método
getPrototypeOf()
para verificar se um valor é um objeto ou não 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