【发布时间】:2011-10-06 11:46:03
【问题描述】:
我有以下型号:
var Soq = Backbone.model.extend({
default:{
'name': 'something'
, 'parents': [] //array will be passed by reference to attributes hash on new object instantiation
}
});
我是 javascript 和主干的新手,但查看源代码我认为可能发生的情况是,当此模型的属性设置为默认值 (backbone.js: 137) 并且默认值是一个对象时,它由参考。这意味着当我做这样的事情时:
var soq = new Soq;
var parents = soq.get('parents');
parents.push('parent'); //changes defaults of the proto object
var soq2 = new Soq;
console.log(soq2.get('parents');); //will output ['parent']
console.log(soq2.defaults.parents); //will output ['parent']
我是否正确理解这一点?如果是这样,最好的方法是设置作为对象的默认值,而不会使它们在将来的实例引用它们时随时更改?
如果我不清楚或误解了什么,请告诉我。提前感谢您的宝贵时间。
【问题讨论】: