Categories
JavaScript Answers

What’s the Most Accurate Way to Check a JavaScript Object’s Type?

Spread the love

On many occasions, we would need to check for a JavaScript object’s data type because of its dynamic nature.

In this article, we’ll look at the most accurate way to check for JavaScript object’s type.

Use typeof for Primitive Values

We should use the typeof for checking primitive values except null

For instance, if we have:

console.log(typeof 1)  
console.log(typeof '')  
console.log(typeof true)  
console.log(typeof 1n)  
console.log(typeof undefined)  
console.log(typeof Symbol())

We use typeof to get the type for numbers, booleans, bigints, undefined , and symbols.

Therefore, we get:

number  
string  
boolean  
bigint  
undefined  
symbol

from the console log.

Since typeof null returns 'object' , we can’t use it to check if an expression returns null .

Use Object.getPrototypeOf to Get the Prototype of an Object

We can check the prototype of an object with the getPrototypeOf method.

For instance, if we have:

const o = {}  
const proto = Object.getPrototypeOf(o);  
console.log(proto === Object.prototype);

Then the console log logs true since an object literal inherits from Object.prototype .

We just pass in the object we get the prototype from with the Object.getPrototypeOf method.

And if we created an object from a constructor, we can do the same check.

For instance, we can write:

const o = new Date()  
const proto = Object.getPrototypeOf(o);  
console.log(proto === Date.prototype);

to check that o is created from the Date constructor.

This should also log true since o is created by instantiating Date .

Conclusion

We should use typeof to check the type of primitive values.

And we can use the Object.getPrototypeOf method to check for an object’s prototype.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *