Determine if a value is an object using JavaScript

What is the method to verify if a given value is an object in JavaScript?

To determine if a given value is an object in JavaScript, the typeof operator can be a starting point, but it requires some additional checks. Here’s a method leveraging both typeof and instanceof to evaluate whether a value is an object, excluding arrays and null values, which are common pitfalls for such verification.

Understanding typeof:
The typeof operator returns "object" for objects but does the same for arrays and null. Therefore, it isn’t sufficient on its own for object verification.

Example Code:

function isObject(value) {
  return value !== null && typeof value === 'object' && !Array.isArray(value);
}

// Usage examples:

console.log(isObject({})); // true
console.log(isObject([])); // false
console.log(isObject(null)); // false
console.log(isObject(42)); // false
console.log(isObject("Hello")); // false
console.log(isObject(new Date())); // true

Explanation:

  1. value !== null: null is considered an “object” in JavaScript when using typeof, so it’s essential to rule this out first.

  2. typeof value === 'object': By using typeof, you can filter out non-object types like numbers, strings, and booleans.

  3. !Array.isArray(value): This additional check ensures that arrays, which also return "object" with typeof, are not misidentified as objects.

The provided function, isObject, efficiently checks for the most accurate object identification without mistakenly categorizing arrays or null as objects.

Hey, to identify if a value is an object, excluding arrays and null, try this concise approach:

function isObject(value) {
  return value && typeof value === 'object' && !Array.isArray(value);
}

Usage:

isObject({}); // true
isObject([]); // false
isObject(null); // false
//... any value