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