2013-03-28 35 views
2

我读过隐藏课V8 Design Elements:Fast Property Access。在本例中JavaScript V8中的纯对象是否有隐藏类?

的对象是通过构造函数创建

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

刚刚阅读DE-REFERENCING MISCONCEPTIONS部分。

是关于删除属性这篇文章的权利(问题3#)

+0

如果我理解正确:是的,没有。如果你从一个对象中删除,它不再有一个类。 – 2013-03-28 07:15:19

+0

我会说是,是的,是的。 @Jan:它还拥有带有y属性的类,不是吗? – Bergi 2013-03-28 07:27:56

+0

@Bergi这就是我的想法,但除非在V8中改变,否则这不是V8所做的。看到那篇文章。 – 2013-03-28 07:30:23

回答

0

所以,我的问题#1:是否P2份额隐藏类P1? 答:不,只有使用相同构造函数创建的对象才会共享隐藏的类。

对#2问题的回答:在p2上删除属性将更改隐藏的p2类。

我已经通过chrome开发工具上的堆内存快照选项验证了这一点。

谢谢,