2017-12-21 6 views
1

JavaScriptベースのゲームを書くときは、通常、オブジェクトプールを使用してGC作業を減らします。これは通常、既存のオブジェクト、例えばにコンストラクタを適用することを含む。:JavaScriptクラスを使用したプール

constructor.apply(object, arguments); 

この方法は、コンストラクタ関数は、新しいオブジェクトを作成するために、既存のオブジェクトを「設定」の両方に使用することができます。 (私は同様のことをする他のプーリングシステムを見てきました)

JavaScriptクラスのコンストラクタ(つまり、 'class'キーワードを使用して作成)は、上記のコードを意味する 'new'でのみ呼び出すことができますもはや動作しません。

私の質問は、「クラス」を介して作成されたクラスでプールを使用する実践的な方法はありますか?それとも、 'class'をあきらめて、 'class'キーワードを使わずに '手動で'クラスを手動でセットアップするのが最善の選択肢ですか?

答えて

1

コンストラクタを再適用するのではなく、悪いことであり、紛らわしい場合は、initメソッドで初期化ロジックを作成し、コンストラクタでthis.init()を呼び出します。

オブジェクトを再初期化するときは、obj.init()を呼び出すだけで誰もが理解できます。

class Foo { 
    constructor(...args) { 
     this.init(...args) 
    } 

    init(val) { 
     this.val = val 
    } 
} 

const f = new Foo(42) 
console.log(f.val) 
f.init(43) 
console.log(f.val) 
関連する問題