Compruebe si un valor es un objeto en JavaScript

Hiten Kanwar 12 octubre 2023
  1. Utilice la función instanceof para comprobar si un valor es un objeto o no en JavaScript
  2. Utilice la función typeof() para comprobar si un valor es un objeto o no en JavaScript
  3. Utilice funciones definidas por el usuario para comprobar si un valor es un objeto o no en JavaScript
  4. Utilice el método getPrototypeOf() para comprobar si un valor es un objeto o no en JavaScript
Compruebe si un valor es un objeto en JavaScript

En JavaScript, cada valor definido es un objeto o una primitiva. Cualquier valor que no sea un objeto y no tenga ningún método se conoce como primitivo. Todo lo que no es primitivo es un objeto o no.

En este tutorial, comprobaremos si un valor es un objeto o no.

Utilice la función instanceof para comprobar si un valor es un objeto o no en JavaScript

Comprobaremos el valor con la ayuda del método instanceof, que devuelve el tipo de objeto en tiempo de ejecución.

En el siguiente ejemplo, la función devolverá true si el valor es de un tipo de objeto.

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

Producción :

true

Pero este método no funcionará en todos los casos. El isObject(Object.prototype) y el isObject(Object.create(null)) devolverán False.

Utilice la función typeof() para comprobar si un valor es un objeto o no en JavaScript

Podemos comprobar el tipo de objetos utilizando la función typeof().

Por ejemplo,

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

Producción :

true

Este método tampoco funcionará para todos los casos de prueba. Devolverá falsos positivos para los casos de prueba nulos y falsos negativos para las funciones. El isObject(Object) también devolverá False.

También podemos definir otra función usando esta función que abordará las limitaciones mencionadas anteriormente.

Vea el código a continuación.

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));

Producción :

true 
true

La función en el ejemplo anterior devuelve False si el valor es NULL. Si el valor es de tipo función o tipo objeto, devuelve verdadero. De lo contrario, devuelve False.

Utilice funciones definidas por el usuario para comprobar si un valor es un objeto o no en JavaScript

Podemos definir más funciones de este tipo para realizar el trabajo en función del constructor y la clase del objeto.

Por ejemplo,

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));

Producción :

true
true

En el ejemplo anterior, creamos dos funciones que podrían verificar si el valor dado es un objeto.

Utilice el método getPrototypeOf() para comprobar si un valor es un objeto o no en JavaScript

El método getPrototypeOf lanzará una excepción si su argumento no es un objeto. Podemos usarlo para verificar el tipo de clase del valor dado.

Por ejemplo,

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

Producción :

true

Artículo relacionado - JavaScript Object