JavaScript でのオブジェクト作成: new Object() とオブジェクト リテラル表記法
JavaScript でオブジェクトを作成する方法には、2 つの一般的なアプローチが含まれます。 : new Object() とオブジェクト リテラル表記を使用したコンストラクター ベースの構文。どちらの方法でも同様の結果が得られるように見えますが、区別する必要があります。
コンストラクターベースの構文 (new Object() 経由):
このアプローチには以下が含まれます。最初の例のように、 new キーワードと Object() コンストラクターを使用して新しいオブジェクトをインスタンス化します。コード:
person = new Object()
オブジェクト リテラル表記:
対照的に、オブジェクト リテラル表記は、次で示すように、中括弧内でオブジェクトを直接定義する簡潔な方法を提供します。 2 番目のコード例:
person = { property1 : "Hello" };
メソッドの違い定義:
これら 2 つのアプローチの主な違いは、メソッドをオブジェクトに組み込むときに現れます。
オブジェクト リテラルの使用 (欠点):
オブジェクト リテラル内でメソッドを定義する場合、各オブジェクト インスタンスはメソッドの独自のコピーを保持するため、特に次の場合にメモリ オーバーヘッドが発生します。多数のオブジェクトまたはメソッドを操作します。
function Obj( prop ) { return { p : prop, sayHello : function(){ alert(this.p); }, }; } var foo = new Obj( "hello" ); // creates a new instance of Obj
プロトタイプ継承による new Object() の使用 (利点):
コンストラクターベースの構文を使用すると、メソッドは次のようになります。オブジェクトのプロトタイプで定義され、すべてのインスタンスが同じメソッドを共有できるようになります。このアプローチはメモリを節約し、大規模なオブジェクト セットや複雑なメソッド階層を管理する場合に特に有益です。
function Obj( prop ) { this.p = prop; } Obj.prototype.sayHello = function(){alert(this.p);}; var foo = new Obj( "hello" ); // creates a new instance of Obj
結論:
オブジェクトにメソッドがない単純なシナリオでは、両方ともアプローチも同様に実行されます。ただし、メソッドを必要とするオブジェクトを操作する場合は、プロトタイプ継承を使用したコンストラクターベースの構文が優れた選択肢として浮上し、大幅なメモリ節約と効率的なコード編成が実現します。
以上がJavaScript で new Object() とオブジェクト リテラル表記を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。