私はこの2日間、私の頭を叩いています。何らかの理由で、バックボーンは、継承された子モデル間で親インスタンスデータを共有しています。 HERESに例:私が探している何Backbone.js:モデル継承により共有データが発生する
var Base = Backbone.Model.extend({
index : []
});
var Group = Base.extend({
initialize : function() {
this.index.push('from group');
}
});
var User = Base.extend({
initialize : function() {
this.index.push('from user');
}
});
var user = new User();
console.log(user.index); // ['from user']
var group = new Group();
console.log(group.index) // ['from user', 'from group']
は次のとおりです。
console.log(user.index); // ['from user']
console.log(group.index) // ['from group']
任意の洞察力?
ありがとうございます! Matt
ありがとうございました。私は本当に 'extend()'がオブジェクト/配列をクローンすることによってこの問題を避けることを望んでいました。親クラスの配列とオブジェクトを定義するこのような習慣は、意図しない結果を招く可能性があるため避けてください。 – Matt
このようなクラスにオブジェクトや配列を定義する理由はありますが、インデックスをインスタンス変数として使用し、各インスタンスに固有のものをクラス変数などのすべてのインスタンス間で共有することを目的としています。インスタンス変数が必要な場合は、継承するオブジェクトに定義してはいけませんが、クラス変数を使用する場合は、そのようにしてください。 Skylarが示しているように、親のコンストラクタでインスタンス変数を定義するのにも問題ありません。 – chubbsondubs