How to Check If a Value is an Object in JavaScript

Avatar

By squashlabs, Last Updated: November 15, 2023

How to Check If a Value is an Object in JavaScript

To check if a value is an object in JavaScript, you can use the typeof operator and the instanceof operator. Here are two possible approaches:

Using the typeof operator:

The typeof operator returns a string that indicates the type of a value. When used with an object, it returns “object”. You can use this information to check if a value is an object.

function isObject(value) {
  return typeof value === "object" && value !== null;
}

In this example, the isObject function takes a value as an argument and checks if its type is “object” and if it is not null. If both conditions are met, the function returns true, indicating that the value is an object. Otherwise, it returns false.

Here’s an example usage of the isObject function:

const obj = { name: "John", age: 30 };
const arr = [1, 2, 3];
const str = "Hello, World!";
const num = 42;

console.log(isObject(obj));  // true
console.log(isObject(arr));  // true
console.log(isObject(str));  // false
console.log(isObject(num));  // false

In this example, obj and arr are both objects, so the isObject function returns true for both. However, str and num are not objects, so the function returns false for both.

Using the instanceof operator:

The instanceof operator allows you to check if an object is an instance of a particular class or constructor function. If a value is an object and it is an instance of the specified class or constructor function, the instanceof operator returns true; otherwise, it returns false.

function isObject(value) {
  return value instanceof Object;
}

In this example, the isObject function checks if the value is an instance of the Object class. If it is, the function returns true; otherwise, it returns false.

Here’s an example usage of the isObject function:

const obj = { name: "John", age: 30 };
const arr = [1, 2, 3];
const str = "Hello, World!";
const num = 42;

console.log(isObject(obj));  // true
console.log(isObject(arr));  // true
console.log(isObject(str));  // false
console.log(isObject(num));  // false

In this example, the output is the same as the previous example because both approaches yield the same result.

Alternative Ideas:

– Another way to check if a value is an object is by using the Object.prototype.toString method. This method returns a string representation of the object’s type. If the value is an object, the string will start with “[object “, followed by the object’s class name, and end with “]”.
– You can also use the Object.prototype.hasOwnProperty method to check if an object has a specific property. If the value is an object and it has the property, it is most likely an object.

Here’s an example using Object.prototype.toString:

function isObject(value) {
  return Object.prototype.toString.call(value) === "[object Object]";
}

In this example, the isObject function checks if the value’s string representation starts with [object ” and ends with “]”. If it does, it returns true; otherwise, it returns false.

Here’s an example using Object.prototype.hasOwnProperty:

function isObject(value) {
  return typeof value === "object" && value !== null && value.hasOwnProperty("constructor");
}

In this example, the isObject function checks if the value’s type is “object”, if it is not null, and if it has the “constructor” property. If all conditions are met, it returns true; otherwise, it returns false.

Best Practices:

– When checking if a value is an object, it is important to also check if it is not null. The typeof operator returns “object” for null, which can lead to incorrect results if not handled properly.
– Consider using the typeof operator for a general check, and the instanceof operator or Object.prototype.toString for more specific checks, depending on your requirements.
– It is a good practice to encapsulate the object-checking logic in a separate function to promote code reusability and maintainability.

More Articles from the The Big Javascript Guide: From Basics to Advanced Concepts series: