確かに違いがあります。 this.AlertA
を定義する場合は、ObjA
のインスタンスに対してローカルなメソッドを定義しています。 コンストラクタのプロトタイプにAlertA
を追加すると、すべてのインスタンスがObjA
に定義されます。後者は、この場合は1回だけ割り当てられるため、より効率的ですが、ObjA
のインスタンスを作成するたびにローカルメソッドが割り当てられます。
そうでthis.AlertA
使用:コンストラクタメソッドAlertA
を追加しなければならないA、B及びCのため
var A = new ObjA,
B = new ObjA,
C = new ObjA;
を。一方、AlertB
は1回だけ追加されます。これをチェックすることができます:
function ObjA() {
alert('adding AlertA!');
this.AlertA = function() {
alert("A");
};
if (!ObjA.prototype.AlertB) {
alert('adding AlertB!');
ObjA.prototype.AlertB = function() {
alert("B");
};
}
}
var A = new ObjA, //=> alerts adding AlertA! and alerts adding AlertB!
B = new ObjA, //=> alerts adding AlertA!
C = new ObjA; //=> alerts adding AlertA!
おそらく重複:http://stackoverflow.com/questions/422476/javascript-setting-methods-through-prototype-object-or-in-constructor-differenc –
本当に重複しています、ありがとうございます。 –
[JavaScriptの 'prototype'と 'this'の使用は可能ですか?](http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript) – user2864740