2013-03-28 54 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開發工具上的堆內存快照選項驗證了這一點。

謝謝,