私はバックボーン モデルを使用していますが、バックボーン モデルの特定のインスタンス内に設定されている JSON オブジェクトと配列が他のインスタンスからもアクセス可能になっていることに非常に驚いています。
var myModel = Backbone.Model.extend({
defaults: {
exp: [],
name: '',
json: { }
},
getExp: function() {
return this.get('exp');
},
getJSON: function() {
return this.get('json');
}
});
var m1 = new myModel();
var experiences = m1.getExp();
experiences.push('arrayitem1');
experiences.push('arrayitem2'); //Setting values for array of m1
m1.set('name', 'my name');
var json = m1.getJSON();
json.key = 'somevalue';
var m2 = new myModel();
console.log(m1.attributes);
console.log(m2.attributes);
出力:
{"exp": ["arrayitem1", "arrayitem2"], "json": {"key": "somevalue"}, "name": "my name"}
{"exp": ["arrayitem1", "arrayitem2"], "json": {"key": "somevalue"}, "name": ""}
m2 のキーと値のペア
- m2 内の Name プロパティはデフォルトです。(予想通り)
- exp : m1 と同じ (想定外)
- json: m1 と同じ (想定外)
JSBINデモ
この行動の理由を説明することはできません。
アップデート
どうすれば解決できるのか知りたいです。それは私のために働いているので、私は答え(ちょっとハック)を追加しましたが、それが正しいかどうかはわかりません。この動作の理由も知りたいです。私は何をしているのですか、それともこれは Backbone の何らかのバグですか?