2

現在の URL のハッシュに応じて異なるメッセージを表示する JS に取り組んでいます。これですべて機能しましたが、メッセージにアクセスする最善の方法は何だろうと思っていました (メッセージは .js ファイルにコード化されます)。

現時点では、次のようなオブジェクトにメッセージを保存しています。

popups = {
    TemplateMessage: {
        title: "Template Popup Title", 
        message: "This is a template popup message! Copy this to add a message.",
        modal: true
    },
    AnotherMessage: {
        title: "another title", 
        message: "message.",
        modal: true
    } /* etc */
};

これらのメッセージにアクセスする方法は、次のように「for in: ループ」を使用することです。

for (key in popups) {
    //Do something with...
    popups[key].title;
    popups[key].message;
    popups[key].modal;
}

しかし、popups[key] を一時変数に割り当てる方が効率的でしょうか? お気に入り:

var p;
for (key in popups) {
    p = popups[key];
    //Do something with...
    p.title;
    p.message;
    p.modal;
}

現時点では、これはすべて比較的小規模であり、この段階では大した問題にはなりませんが (もしあったとしても)、たとえば、それぞれに 50 のプロパティを持つ 25 の異なるオブジェクトがある場合はどうなるでしょうか? 私の本当の質問は、一時変数から、またはオブジェクト内のオブジェクトから変数を取得することに(比較的)大きな違いがあるのでしょうか?

これを適切にテストする方法がよくわかりません。何か提案はありますか?

4

1 に答える 1

1

この jsPerf テストで見られるように、大きなオブジェクトのループでobject[key]一時変数にyour を代入する方が実際に高速であることがわかります。そうすれば、オブジェクトのすべてのプロパティを取得する必要がなくなります。for-inobject[key]

于 2012-11-27T11:11:11.767 に答える