編集:動作を示すために私の例を修正しました。
details
AbstractParentのプロパティを「インスタンスプロパティ」と呼ぶものにしたかったのですが、それは「静的プロパティ」のように機能します。これらの用語はjavascriptには適切ではないことに気付いたので、新しい子クラスを作成するときに、独自のAbstractParentプロトタイプを取得しないのはなぜですか?なぜ彼らは同じものを共有するのですか?
以下のコードでは、空のアラートを期待していますが、代わりに「新しい詳細」を取得します
var AbstractParent = Backbone.Model.extend({
details: [],
addDetail: function(detail) {
this.details.push(detail);
},
getDetails: function() {
var rtn = '';
for(var i=0;i<this.details.length;i++) {
rtn += this.details[i];
}
return rtn;
}
});
var Child = AbstractParent.extend({});
var ch1 = new Child;
ch1.addDetail("new details");
var ch2 = new Child;
alert(ch2.getDetails()); // => 'new details'
details
これは、が配列の場合にのみこのように機能するようです。文字列またはオブジェクトの場合、およびによって共有されませch1
んch2
。