我在 V8 Design Elements:Fast Property Access 读过隐藏类(class).
例子中的对象是由构造函数创建的
var p1 = new Point(1,2)
p1 有一个隐藏类用于快速访问它的属性 'x', 'y'。
var p2 = {x:1,y:2}
所以,我的问题#1 是:p2 是否与 p1 共享一个隐藏类?
而且,如果 p2 确实有一个隐藏类,下面的代码会更改隐藏类吗?(问题 #2)
delete p2.x
这是让我问这个问题的文章:
Writing Fast, Memory-Efficient JavaScript
只需阅读消除错误观念部分。
这篇文章关于删除属性是否正确?(问题#3)
最佳答案
所以,我的问题#1 是:p2 是否与 p1 共享一个隐藏类? 答:不,只有使用相同构造函数创建的对象才会共享隐藏类。
问题 2 的答案:删除 p2 上的属性将更改 p2 的隐藏类。
我已经使用 chrome 开发工具上可用的堆内存快照选项验证了这一点。
谢谢,
关于javascript - JavaScript V8 中的普通对象是否有隐藏类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15676192/