Javascript: Object.create(null) 对于数组(Array.create(null) 等效)

Javascript: Object.create(null) For Arrays (Array.create(null) Equivalent)

用空白原型初始化对象很容易:Object.create(null)。但是,数组没有像对象那样方便的 Array.create 方法。那么,Object.create 的数组等价物是什么?

关于结果数组的访问速度*,初始化空白数组的最佳方法是什么?或者,所述空白数组中的访问速度*是否会比定期 [] 初始化数组的访问速度*慢?

非常感谢任何和所有建设性的回应。


*'accessing speed' 的意思是从数组读取和写入属性的速度。

没有理由不使用 [] 来创建数组。您可以在技术上调用 new Array(),但它实际上与 [].

相同

在幕后,Array 实际上只是一个 Object,以数字作为键和一些特殊逻辑来确保键顺序(Object 在技术上没有,但Object 通常会保持它的键顺序,这不是保证)。

虽然您可以在技术上使用 Object.create(null) 创建您自己的 Array 实现,但它在性能上远不如内置 Array,因为大多数引擎都有特殊代码来提高其性能。

用空白(或任何其他定制的)原型创建数组没有意义。 Object.create(null) 的用例是一个 map1,其中没有原型干扰属性,但我们没有数组及其整数索引的问题。
如果你坚持这样做,

Object.setPrototypeOf([], null)

会实现这一点,但会创建一个非常奇怪的对象,它会破坏很多期望数组具有特定方法的代码。

Or, would the property access speed in said blank array be slower than that of a regularly initialized array?

是的,很可能 - 奇怪的 对象总是很有可能没有像标准对象那样被优化。无论如何,它不会更快。

1:当然,现在已弃用 true Maps