谈谈隐藏类
4views
先来看一个问题,以下哪段代码执行效率更高:
const obj1 = {
a: 1
}
const obj2 = {
a: 1
}
const obj3 = {
a: 1
}
const obj1 = {
a: 1
}
const obj2 = {
b: 1
}
const obj3 = {
c: 1
}
答案是:左边效率更高,因为重用了隐藏类(Hidden Class)
。
关于隐藏类,可以参考这篇文章
我们来试一试:
console.time("a")
for (let i = 0; i < 1000000; i++) {
const obj = {}
obj["a"] = i
}
console.timeEnd("a")
console.time("b")
for (let i = 0; i < 1000000; i++) {
const obj = {}
obj[`${i}`] = i
}
console.timeEnd("b")
最终打印结果:
a: 2.129ms
b: 210.115ms
原因分析:
属性顺序一致
的JS对象,会重用一个隐藏类,减少 new Class 的开销。因此,得出优化建议: