wmo*_*ock 13 javascript prototype javascript-objects
我明白使用Object.create(null)创建一个没有proto属性的对象(即Object.getPrototypeOf( myObj ) === null)但有人可以帮助我理解这个用例是什么?
换句话说,为什么要创建一个完全为空的对象(即不从中继承任何方法Object.prototype)?
在极少数情况下可能会添加某些内容 Object.prototype
Object.prototype.bar = 'bar';
Run Code Online (Sandbox Code Playgroud)
考虑,创建一个Object可能会更好,Object.create(null)因为它不会继承它
({}).bar; // bar
// vs
Object.create(null).bar; // undefined
Run Code Online (Sandbox Code Playgroud)
这意味着,如果您使用了for..in循环,则不必担心
此外,您可以使它失败instanceof测试
Object.create(null) instanceof Object; // false
Run Code Online (Sandbox Code Playgroud)
这是因为instanceof基本上是针对RHS 测试原型链,并且没有这样的链.
您可以将这样的对象用于键值映射。如果没有原型链,您可以确定.toString()对象上不会无意中存在诸如此类的东西。这意味着您可以不谨慎地访问其上的属性,并且您可以使用in运算符而不是Object.prototype.hasOwnProperty.call.
| 归档时间: |
|
| 查看次数: |
321 次 |
| 最近记录: |