0

プロトタイプを使用して JavaScript 関数を作成するこれら 2 つの方法の違いに興味があります。多くの JS スタイルガイドでは、前者よりも後者が好まれますが、後者は DRY 原則のために多少冗長であることがわかりました。スタイルだけの問題?あるバージョンは他のバージョンよりも高速ですか? 私が行方不明であることは明らかですか?:

乾いた状態に保ちますか?

var Klass = function() {}

Klass.prototype = {
   propertyA: 20,
   propertyB: "hey there",
   methodA: function() {},
   methodB: function() {},
}

スタイルガイドで一般的に推奨されている:

var Klass = function() {}

Klass.prototype.propertyA = 20;
Klass.prototype.propertyB = "hey there";
Klass.prototype.methodA = function() {};
Klass.prototype.methodB = function() {};

これを明確にするための助けをいただければ幸いです!ありがとう -

4

2 に答える 2

1

唯一の違いは、最初のメソッドがプロトタイプに追加するのではなく、プロトタイプを置き換えることです。関数を変数に代入した直後に実行しても、実質的な違いはありません。

関数式を変数に代入する代わりに通常の関数を使用する場合、つまり:

function Klass() {}

次に、関数の宣言の前後の両方で 2 番目のメソッドを使用できるという違いもあります。たとえば、次のようになります。

Klass.prototype.propertyA = 20;
Klass.prototype.methodA = function() {};

function Klass() {}

Klass.prototype.methodB = function() {};
Klass.prototype.propertyB = "hey there";

プロトタイプ オブジェクトを置き換える場合は、宣言の前後にしかできないため、プロトタイプ メソッドは 1 か所のままです

于 2013-04-28T20:01:06.933 に答える