Czyszczenie koncepcji `ukrytych klas 'w V8

Przeczytałem kilka artykułów o ukrytych klasach V8. Wciąż mam jednak w głowie kilka pytań:

Jeśli, powiedzmy, są dwa obiekty:

var a = { }
a.x = 5
a.y = 6

var b = { }
b.y = 7
b.x = 8

Czy kończą z tą samą ukrytą klasą lub oddzielną tylko dlatego, że się udali0 + x + y i inni0 + y + x? Jak rozumiem, dostają różne klasy, ale chcą się upewnić, że je dostałem.

Wtedy mamy ten przypadek:

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
}

Czy mamy taką samą ukrytą klasę? Mogę to zgadnąća, b ic rób, aled nie. O ile nie ma jakiegoś sortowania na takich wyrażeniach obiektów (podobnie jak krótka deklaracja tablicy analizowana dla danego typu).

Wreszcie mamy to:

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)

Jest to podobne do drugiego przypadku. Obiekty te wydają się takie same, z wyjątkiem ich pochodzenia (instanceof...) jest inny. Czy jednak obiekty mają tę samą ukrytą klasę?

questionAnswers(2)

yourAnswerToTheQuestion