|
|
1
89
在您的情况下,您首先设置最后一个元素,这意味着JS引擎将看到一个需要长度为
为了回应@Christoph并出于拖延的愿望,这里描述了如何在JS中(通常)实现数组——具体细节因JS引擎而异,但一般原理是相同的。
所有JS
此Object类型处理所有标准属性访问逻辑、原型链等。
现在,当你在JS中创建一个数组时,引擎会创建类似于上述数据结构的东西。当你在Array实例中插入一个对象时,Array的put方法会检查属性名是否是0到2^32-1(或者可能是2^31-1,我完全忘记了)之间的整数(或者可以转换为整数,例如“121”、“2341”等)。如果不是,则put方法被转发到基本Object实现,并完成标准[[put]]逻辑。否则,该值将被放置在Array自己的存储中,如果数据足够紧凑,则引擎将使用平面数组存储,在这种情况下,插入(和检索)只是一个标准的数组索引操作,否则引擎将把数组转换为稀疏存储,并使用映射从propertyName获取值位置。
|
|
|
2
11
在IE7上:
你的测试 该方法在IE7上似乎更好(差异巨大),由于在其他浏览器上差异很小,因此似乎是 方法确实是向数组添加元素的最佳方式。 simple test script ,所以我真的不知道该说什么或想什么了,我无能为力。 顺便说一句:在我的IE7上,你的脚本停止了,浏览器问我是否想让它继续运行(你知道典型的IE消息是:“停止运行此脚本?…”) |
|
|
3
7
|
|
4
6
your page
https://jsperf.com/push-method-vs-setting-via-key/10
|
|
5
0
|
|
|
6
-6
|
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |