私はV8の隠れたクラスについていくつかの記事を読んだ。しかし、私はまだ私の頭の中でいくつかの質問を持っている:V8の `隠されたクラス 'の概念をクリアする
、のは言わせた場合は、二つのオブジェクトがあります。
var a = { }
a.x = 5
a.y = 6
var b = { }
b.y = 7
b.x = 8
は、彼らが1は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...
)が異なる以外は同じように見えます。しかし、オブジェクトは同じ隠しクラスで終わるのでしょうか?
Javascriptにはクラスがありません。隠されたクラスは概念ではなく、実装の内部の詳細です。同様の問題を解決する必要があるv8やその他の仮想マシンをハックしたくない場合を除いて、気にしません。 –
私は実際に私が書いたコードのパフォーマンスに心配しています。私は自分自身を経験してきました。誰かがそれをゆっくりと実行すると不平を言うときに気をつけるよりも、パフォーマンス*を気にする方が簡単です。 – Pijusn
あなたが実際に気にする必要があるパフォーマンスの側面があります。最適なアルゴリズムを選ぶのと同じように、頻繁に必要なデータをキャッシュします。しかし、このレベルでのパフォーマンスを本当に気にする必要がある場合は、まずJavaScriptを使用するべきではありません。 –