2

これが古いトピックの再投稿である場合は申し訳ありませんが、検索しても同様の投稿が見つかりませんでした.

この次のコードは、私が行っているプロジェクトで javascript の継承を行う方法の例です。残念ながら、ほとんどのエンドユーザーはメモリが非常に少ない winXP + EI7 セットアップを使用しているため、メモリのすべてのビットを保存しようとしています。できます。

今私の質問は次のとおりです:コンストラクターの最後にparams = nullを設定して実際にメモリを節約しますか?window.namespace.MyClass.MySubclassポインターを同じ値に割り当てた後、MyClassポインターに同じことを行う必要がありますか? ?

(function (window, undefined) {

    var MySubClass = function (params) {

        this.elements = {
            // jQuery dom elements
        };

        this.vars = {
           // vars
        };

        this.controls = {
            // class instances
        };

        this.init(params);
        params = null; // cleanup
    };

    MySubClass.prototype = new namespace.MyClass.Base();

    MySubClass.prototype.init = function (params) {

        // do stuff

        params = null; // cleanup
    };


    MySubClass.prototype.add = function (item) {
        // adds item to an internal collection
    };

    window.namespace.MyClass.MySubClass = MySubClass;

})(window);
4

2 に答える 2

0

私はあなたがそうしないと確信しています — いずれにせよ、変数は関数の最後でスコープ外になります。もちろん、誰かが実際にこれを客観的にテストした場合、確認や反論は大歓迎です。

Ps。また、Donald Knuth の言葉を引用すると、時期尚早の最適化は諸悪の根源です。 使用したトリックが何らかの効果をもたらしたとしても、ほとんどの場合、それだけの価値はありません。

于 2011-10-04T15:26:59.767 に答える
0

params = null を設定してもおそらく大きな違いはありませんが、悪い習慣ではありません。

ここに記載されているツールを使用して、メモリ リークを見つけてクリーンアップできます。

于 2011-10-04T15:27:33.117 に答える