浏览器(等)**内部优化**他们对javascript对象属性的检索吗?

mar*_*rkE 1 javascript object

附加说明:

我确实检查了之前的答案,并希望得到一个更新的答案,而不是Chrome特定的答案:JavaScript对象中的键查找性能

假设一个标准的javascript"dictionary"对象具有如下属性:

var myObject = {
   Key1: ”Value1”,
   Key2: ”Value2”,
   Key3: ”Value3”,
   …
   Key500: ”Value500”
}
Run Code Online (Sandbox Code Playgroud)

有谁知道浏览器(等)是否内部优化了对这些属性的检索?

一个好的案例可能是自动排序+二进制搜索.

不太好的情况可能是简单的线性搜索.

EcmaScript标准称浏览器可以按照自己的意愿执行内部操作:

[browsers等]可以支持[object]的内部属性以及任何依赖于实现的行为,只要它与本文档中声明的特定主机对象限制一致即可.

未指定枚举属性的机制和顺序.

我真的不需要知道具体的优化,我只是想知道他们是否正在尝试优化超出简单的线性搜索.

那么,有没有人有"内部"知识?

Viv*_*ath 5

这取决于浏览器和JavaScript引擎.Google的V8动态创建隐藏类而不是动态查找,以减少用于访问属性的时间.使用隐藏类还具有使用基于类的优化(例如内联缓存)的额外好处.

还有更多的信息,这里的"快速属性访问权限"部分.这个想法基本上来自本文:自我的有效实现,一种基于原型的动态类型面向对象语言.

Internet Explorer具有"快速类型系统"以优化属性访问.本演示文稿中的更多细节.

Mozilla的SpiderMonkey引擎使用属性缓存(警告:细节有点过时,但它基本上仍然使用属性缓存).

新的IonMonkey引擎使用内联属性缓存,但到目前为止细节似乎很少.