bar(あなたが宣言したように)との違いは何ですか?
var bar2 = new foo();
barとの間に大きな違いはありませんがbar2、 のプロトタイプbarは常に のプロトタイプ プロパティでありObject(まるであなたが書いたかのようにvar bar = new Object(); bar.something = value; bar.execute = function() {...})、 のプロトタイプはのプロパティ(またはbyのプロトタイプ プロパティ)bar2に割り当てられたものになります。デフォルト)。prototypefooObject
プロトタイプの問題を除けば、コンストラクター関数の作成は、ほとんどの場合利便性の問題です。
コンストラクター アプローチでは、プロトタイプを使用して利点を得ることができることに注意してください。
function foo() {
this.something = value;
}
foo.prototype.execute = function() { /* Whatever */ };
次に、 のすべてのインスタンスが同じ関数をfoo共有します。executeこれは、オブジェクトごとに新しい関数オブジェクトを用意するよりもはるかにスペース効率が良くなりfooます。(もちろん、これらの 1 つだけを作成する場合は、あまり利点はありません。)