Ich habe einige Artikel über versteckte Klassen von V8 gelesen. Allerdings habe ich noch ein paar Fragen in meinem Kopf haben:Das Konzept der versteckten Klassen von V8 aufräumen
Wenn, sagen wir mal, gibt es zwei Objekte:
var a = { }
a.x = 5
a.y = 6
var b = { }
b.y = 7
b.x = 8
Sie sie mit der gleichen versteckten Klasse am Ende oder trennen, nur weil man ging 0 + x + y
und die andere 0 + y + x
? Wie ich verstanden habe, bekommen sie verschiedene Klassen, aber ich will nur sicherstellen, dass ich sie bekommen habe.
Dann haben wir diesen Fall:
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
}
Haben wir mit der gleichen versteckten Klasse enden? Ich könnte vermuten, dass a
, b
und c
tun, aber d
nicht tut. Es sei denn, es wird bei solchen Objektausdrücken eine Sortierung durchgeführt (ähnlich wie bei der kurzen Erklärung des Arrays, die für den Typ analysiert wird).
Schließlich haben wir diese:
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)
Auf dem zweiten Fall sorta ähnlich ist. Diese Objekte scheinen identisch zu sein, außer dass ihr Ursprung (instanceof...
) anders ist. Gibt es jedoch Objekte mit der gleichen versteckten Klasse?
Javascript hat keine Klassen. Die versteckten Klassen sind kein Konzept, sie sind interne Details der Implementierung. Es sei denn, Sie möchten v8 oder andere virtuelle Maschinen hacken, die ähnliche Probleme lösen müssen. –
Ich interessiere mich eigentlich für die Leistung des Codes, den ich schreibe. Ich habe mich selbst erfahren, dass es einfacher ist, sich um Leistung * zu kümmern, als Sie * gehen, anstatt sich darum zu kümmern, wenn sich jemand beschwert, dass es zu langsam läuft. – Pijusn
Es gibt Aspekte der Leistung, um die Sie sich kümmern müssen, während Sie gehen. Wie die Auswahl optimaler Algorithmen, Caching von Daten, die Sie oft benötigen und so weiter. Aber wenn Sie auf dieser Ebene wirklich auf Leistung achten müssen, sollten Sie wahrscheinlich gar nicht erst JavaScript verwenden. –