我读过一些关于 V8 隐藏类的文章。但是,我仍然有几个问题:
假设有两个对象:
var a = { }
a.x = 5
a.y = 6
var b = { }
b.y = 7
b.x = 8
他们最终会得到相同的隐藏班级还是仅仅因为一个去0 + x + y
了另一个而分开0 + y + x
?据我了解,他们有不同的课程,但只是想确保我得到它。
然后,我们有这个案例:
function Point(x, y) {
this.x = x
this.y = y
}
var a = new Point(7, 8)
var b = { }
b.x = 6
b.y = 8
var c = {
x: 8,
y: 9
}
var d = {
y: 9,
x: 80
}
我们最终会得到相同的隐藏类吗?我可能会猜到a
,b
并且c
做但d
没有。除非对此类对象表达式进行了一些排序(类似于分析数组的短声明类型)。
最后,我们有这个:
function PointA(x, y) {
this.x = x
this.y = y
}
var a = new PointA(7, 8)
function PointB(x, y) {
this.x = x
this.y = y
}
var b = new PointB(7, 8)
这有点类似于第二种情况。这些对象看起来相同,只是它们的来源 ( instanceof...
) 不同。但是,是否有对象最终具有相同的隐藏类?