Use cases for Object.create(null)

I understand that using Object.create(null) creates an object which has no proto property (i.e. Object.getPrototypeOf( myObj ) === null) but can someone help me understand what are some of the use cases for this?

In other words, why would you want to create an object that is completely empty (i.e. doesn't inherit any methods from Object.prototype)?

Answers:

Answer

In very rare instances where something may have been added to Object.prototype

Object.prototype.bar = 'bar';

It may be better to create an Object with Object.create(null) as it won't inherit this, consider

({}).bar;                // bar
// vs
Object.create(null).bar; // undefined

This means you don't have to worry for example if you've used a for..in loop

Furthermore, you can make it so you fail instanceof tests

Object.create(null) instanceof Object; // false

This is because instanceof is basically testing the prototype chain against the RHS, and there is no such chain.

Answer

You can use such an object for a key-value map. Without the prototype chain, you can be sure that things like .toString() do not unwittingly exist on the object. That means you can incautiously access properties on it, and you can use the in operator instead of Object.prototype.hasOwnProperty.call.

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.