似乎有一种在javascript中使用
创建裸对象的常用方法 Object.create(null)
创建没有任何预先存在的属性的对象。这与做
有什么不同var obj = {}
obj.__proto__ = null
或它们功能相同吗?如果这样做的目的是将对象用作散列映射,那么在添加键值对后 proto 设置为null时,两者之间的性能或功能是否会发生任何变化?
答案 0 :(得分:0)
是的,他们基本相同。
性能会有变化吗?
obj.__proto__
结束时obj.__proto__ = ...
:
警告:根据现代JavaScript引擎如何在每个浏览器和JavaScript引擎中优化属性访问,非常慢的操作,改变对象的[[Prototype]]。改变继承对性能的影响是微妙和遥远的,并不仅仅局限于
Object.create(null)
语句中花费的时间,而是可以扩展到任何可以访问[[Prototype]]具有的任何对象的代码。被改变了。
所以你应该绝对使用{{1}} ...