3

これは、メモリ使用量と「new」キーワードに関連する質問です。ローカルメソッドで「new」を使用するための提案と好みが必要です。

get: function ()
{
    var get = new Ajax.Updater('resourceList',
    "url",
    {
        method: 'POST',
        onComplete: this._onComplete.bind(this)
    });
}

上記のコードでは、オブジェクトをどこにも使用されていないローカル変数に割り当てています。次の方法でもコードを記述できます

get: function ()
{
    new Ajax.Updater('resourceList',
    "url",
    {
        method: 'POST',
        onComplete: this._onComplete.bind(this)
    });
}

ここでは、オブジェクトを変数に割り当てていません。

私は今少し混乱しています。変数に代入する方法と、変数に代入しない方法、どちらが良いですか? ローカル メソッド スコープの後に変数に代入すると、オブジェクトはメモリから削除されますが、代入しないとどうなりますか? ガベージコレクションで処理されますか?それを行う最良の方法は何ですか?個人的には、変数に代入することを好みます。あれは正しいですか?変数に割り当てていない場合、オブジェクトはいつ破棄されますか?

4

2 に答える 2

2

JavaScripts ガベージ コレクターは、アイテムが範囲外になり、到達できなくなったときにアイテムを処理します。Ajax.Updaterこれは、オブジェクトを変数に割り当てるかどうかに関係なく、オブジェクトに当てはまります。

それを変数に割り当てるかどうかについては?私はしません。そのオブジェクトを再び参照するものがないことを明確にします。変数に割り当てると、人々はその変数がどこで使用されているかを調べ始めます。

ガベージ コレクターは非常に巧妙でインテリジェントです。ガベージ コレクターが何かをピックアップするかどうかについて心配する必要はほとんどありません。99.99999999% の場合、そうなるでしょう。

于 2012-06-20T10:24:37.657 に答える
0

後でオブジェクトにアクセスする必要がある場合にのみ、変数に割り当てる必要があります。いずれにしても、オブジェクトはガベージ コレクションされるため、変数宣言と数バイトを節約することもできます。

于 2012-06-20T10:26:08.233 に答える