Use cases for Object.create(null)

前端 未结 2 870
终归单人心
终归单人心 2020-12-06 05:52

I understand that using Object.create(null) creates an object which has no proto property (i.e. Object.getPrototypeOf( myObj ) === null

相关标签:
2条回答
  • 2020-12-06 06:14

    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.

    0 讨论(0)
  • 2020-12-06 06:17

    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.

    0 讨论(0)
提交回复
热议问题