小さなモバイル ゲーム ライブラリを作成していますが、インスタンス化された関数オブジェクトのメンバー関数を宣言するためのベスト プラクティスがわかりません。
たとえば、1 つのプロパティとそれを出力するメソッドを持つ単純なオブジェクトを作成するとします。
function Foo(id){
this.id = id;
this.print = function(){
console.log(this.id);
};
};
ただし、関数の「プライベート」メンバーへのアクセスを必要としない関数は、関数内で宣言する必要はまったくありません。私は同様に書くことができた:
function print(){
console.log(this.id);
};
function Foo(id){
this.id = id;
this.print = print;
};
関数が Foo のインスタンスを介して呼び出されると、インスタンスが のコンテキストになるthis
ため、出力はどちらの場合も同じです。
JSでメモリがどのように割り当てられているか完全にはわかりません。この特定のことについて理解できるものは何も見つかりませんが、最初の例では、print関数を含むFooのすべてのメンバーがインスタンス化されるたびに複製されますが、2 つ目では、事前に宣言された 1 つの関数へのポインターを取得するだけです。これにより、Foo のインスタンスが作成されるたびに割り当てる必要のあるメモリが節約されます。
私は正しいですか、もしそうなら、これを行うことでメモリ/パフォーマンス上の利点はありますか?