3

スニペット 1 をスニペット 2 にリファクタリングしたいと思います。サイズを考えるとパフォーマンスはそれほど問題ではないと思いますが、モジュール パターンへのこのリファクタリングに関して、メモリ使用量に関して何が起こっているのかを理解したかったのです。

モジュール パターンにより、このデータを DOM から 1 回だけプルすることが保証されます。これは私が望むものであり、データが非公開であるという点でミニ レジストリ パターンも形成します。

どちらのスニペットもテスト済みで、基本的に機能します。

スニペット 1 // SUniverisals を SU に置き換えます

var SUniversals = function () {
    // Pull from Server
    this.universals.path = document.getElementById('universals').getAttribute('data-path');
    this.universals.load = document.getElementById('universals').getAttribute('data-load');
    // Set Manually
    this.universals.debug = false;
};
SUniversals.prototype.universals = {};
SUniversals.prototype.get = function( key ) {
    return this.universals[ key ];
};
SUniversals.prototype.set = function( key, value ) {
    this.universals[ key ] = value;
};

スニペット 2

var SU = ( function () 
{
    // private SU.get('load');
    var universals = {};
        universals.path = document.getElementById('universals').getAttribute('data-path');
        universals.load = document.getElementById('universals').getAttribute('data-load');
        universals.debug = false;
    // pubulic
    var publik = {};
        publik.get = function( key )
        {
            return universals[ key ];
        };
        publik.set = function( key, value )
        {
            universals[ key ] = value;
        };
        return publik;
}());
4

2 に答える 2

2

異なる点はほとんどありません。Snippet 2は、基本的にシングルトンを作成しています。スニペット1は「クラス」のように見ることができます。'SUniversals'の複数のインスタンス/オブジェクトを作成し、それらを使用してさまざまなことを行うことができます。

実際、スニペット1はメモリの点でより効率的です。オブジェクトのプロトタイプに追加することにより、作成するオブジェクトの数に関係なく、基本的に各関数のコピーは1つだけになります。モジュールパターンは、個別のエンティティを作成します。

于 2012-07-10T22:01:01.307 に答える
1

心配するほどではありません;-)

真剣に、モジュール パターンで心配する必要があるのは、メモリ リークが発生することだけです。パターン自体は基本的に何も使用しません。

于 2012-07-10T21:54:38.070 に答える