0
我有一個模型的兩個實例,並發現它們似乎在它們之間共享狀態。我會認爲會發生相反的情況。例如:默認情況下,骨幹模型共享狀態
var Q = Backbone.Model.extend({
defaults: {
fooObj: {
bar: {}
}
},
initialize: function() {
_.bindAll(this, 'addFoo');
},
addFoo: function(f) {
//get fooObj
fo = this.get('fooObj');
fo.bar[1] = f;
//set it back
this.set('fooObj', fo);
},
getFoo: function (argument) {
return this.get('fooObj');
}
})
q1 = new Q();
q2 = new Q();
q1.addFoo({iam: 'foo'});
console.log(q2.getFoo().bar[1]); // {iam : "foo"}
雖然我添加{iam: "foo"}
到實例q1
,似乎得到傳播到q2
了。我在這裏錯過了一招嗎?看來get
和set
是訪問模型數據的正確安全方式,但它會導致這種行爲(或者這是預期的)?
的文檔甚至說:*請記住,在JavaScript中,對象是按引用傳遞的,所以如果你有一個對象作爲默認值,它將在所有實例中共享。* –
謝謝,對不起,我錯過了! – malangi