Backbone的模型实例(包括嵌套参数)更改正在影响模型的默认值。
X = Backbone.Model.extend({defaults:{x:{y:{z:1}}, a: "hello"}})
x = (new X()).toJSON()
/*
x -- defaults -->
{
"x": {
"y": {
"z": 1
}
},
"a": "hello"
}
*/
// using lodash's merge, update nested object value
_.merge(x,{x:{y:{z:2}},a:"world"})
/*
{
"x": {
"y": {
"z": 2 // nested, changed
}
},
"a":"world" // changed
}
*/
y = (new X()).toJSON()
/*
y, should be defaults -->
{
"x": {
"y": {
"z": 2 //What!!
}
},
"a":"hello" // remains same as default
}
*/
默认的obj的嵌套参数的引用正在更新 - 因此,创建的所有后续模型都将具有新引用(通过new创建,因此默认的对象)。
试图找到一种解决方法,而不将嵌套对象作为另一个模型。