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

时间:2017-06-19 20:03:46

标签: javascript arrays object prototype proto

使用空白原型初始化对象很容易:Object.create(null)。但是,数组不像对象那样有方便的Array.create方法。那么,数组相当于Object.create

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

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


*访问速度'是什么意思?属性是如何快速读取和写入数组的。

2 个答案:

答案 0 :(得分:1)

没有理由不使用[]来创建数组。您可以在技术上致电new Array(),但它与[]完全相同。

在幕后,Array实际上只是一个Object,其中数字作为键和一些特殊逻辑来确保键顺序(Object技术上没有Object Object.create(null) print('Error! ' *20) @RequestMapping(value = "yourUrl", method = RequestMethod.GET) public ResponseEntity<List<Exercicio>> listarExercicios(YourObject object) { object = restTemplate.getForObject("http://gturnquist-quoters.cfapps.io/api/random", YourObject.class); return ResponseEntity.status(HttpStatus.OK).body(object); } 1}}通常会保持它的关键顺序,这不是保证。)

虽然技术上可以使用{{1}}来创建自己的Array实现,但它的性能远低于内置阵列,因为大多数引擎都会有特殊代码来提高其性能。

答案 1 :(得分:1)

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

Object.setPrototypeOf([], null)

将实现此目的,但会创建一个非常奇怪的对象,它将破坏许多需要数组具有某些方法的代码。

  

或者,所述空白数组中的属性访问速度是否会慢于常规初始化数组的属性?

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

1:当然,他们现在被弃用,而不是true Maps