javascript - JavaScript V8 中的普通对象是否有隐藏类?

标签 javascript v8

我在 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/

相关文章:

javascript - 从javascript中的createRange中删除内容

javascript - 获取 CKEditor 4 中光标位置的父标签

c++ - 在类中包装 V8 时出现段错误?

c++ - 采用 C++11 的 Google v8 引擎

javascript - 有没有办法控制 Chrome GC?

javascript - 两段 jQuery 代码,但只执行了一段

javascript - 关闭编译器选择性优化?

javascript - object[0] 是 JavaScript 中对象的默认键吗?

c++ - 这与 ObjectWrap::Unwrap 的 Holder

javascript - JavaScript 是如何在 Google V8 中执行的,特别是 Canvas 相关代码