new Object() とオブジェクト リテラル表記の違い
JavaScript でオブジェクトを作成するには、次の 2 つの方法があります。コンストラクターを使用します。 new Object() 構文またはオブジェクト リテラル表記に基づいています。どちらのメソッドも同じ結果が得られるように見えますが、オブジェクトにメソッドを追加する場合には大きな違いがあります。
オブジェクト リテラル表記
オブジェクト リテラル表記を使用する場合、メソッドは次のようになります。個々のオブジェクト内で定義されているため、多数のオブジェクトやメソッドが関係する場合は潜在的にメモリを浪費する可能性があります。
function Obj(prop) { return { p: prop, sayHello: function() { alert(this.p); }, }; } const foo = new Obj("hello");
コンストラクターベースの構文
対照的に、新しい Object() 構文では、メソッドがオブジェクト プロトタイプで定義され、すべてのオブジェクト インスタンス間で共有されるため、メモリ使用量が最適化されます。
function Obj(prop) { this.p = prop; } Obj.prototype.sayHello = function() { alert(this.p); }; const foo = new Obj("hello");
オブジェクト プロトタイプを使用する利点
コンストラクターベースの構文とオブジェクト プロトタイプを利用することで、次の利点が得られます:
以上がJavaScript でのメソッド定義にオブジェクト リテラル表記ではなくオブジェクト プロトタイプを選択する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。