6

非常に基本的な JavaScript の質問があります。

JavaScript コードを生成するプログラムを作成しています。変数のプロパティにアクセスするには、次の 2 つの選択肢があります。

1. make the property access a static query. i.e.
var result = object.property

OR

2. make the property access a dynamic query, i.e.
var result = object["property"]

私にとっての違いは、最初のケース (静的クエリのケース) では、プロパティ アクセスごとに個別のコードを生成する必要があることです。一方、2 番目のケース (動的クエリのケース) では、すべてのプロパティに対して同じ関数を再利用できます。

これがパフォーマンスに何らかの違いをもたらすことがわかっているかどうかを判断できますか?

よりobj.property速いかobj["property"]

これは、javascript の解釈に使用されるエンジンにも依存する可能性があるため、JavaScript エンジンとして Rhino を使用することに言及する必要があります。

ですから、この問題に光を当ててください。

ありがとう、よろしく、 VImal

4

3 に答える 3

2

Javascript には静的プロパティはなく、動的プロパティへのアクセスのみが存在します。

ソース コード ファイルに記述した構文に関係なく、プロパティは常に同じ方法でクエリされます。

jshint を使用して、JS ファイルの適切なソース コード規則を推奨します。

http://jshint.com/

常にドット表記をお勧めします。Javascript プロパティに JS 構文で渡される id がない場合にのみ、引用符表記を使用してください。

于 2012-07-20T13:35:30.857 に答える
0

コードの再利用性と保守性を強調します。完了したら、実行速度が遅い場合は、実行速度が遅い場所と改善されている場所を確認してください。

object.propertyそれで、効率の点でとの間に違いはありobj["property"]ますか?私はそうは思いませんが、ほとんどの場合、完成した動作中のコードでパフォーマンスの問題が発生するまでは気にするべきではないと思います。この最後の部分はあなたの心配です。

コードの実行速度が遅いことがわかったとしても、それが理由ではないに違いありません。

于 2012-07-20T13:37:43.180 に答える
-1

Node.JSでこのテストを行いました

var obj = {test:"test"}

var time1 = new Date();
var t1 = time1.getTime();  

for(i = 0; i < 1000000000; i++){
  obj.test;
}

var time2 = new Date();
var t2 = time2.getTime();

console.log(t2-t1)

var time3 = new Date();
var t3 = time3.getTime();

for(i = 0; i < 1000000000; i++){
  obj["test"];
}

var time4 = new Date();
var t4 = time4.getTime();

console.log(t4-t3)  

どちらもほぼ同じパフォーマンスであることがわかりますが、パフォーマンスはわずかにobj.test優れていますobj["test"]

于 2012-07-20T14:06:58.233 に答える