我不是 JavaScript 专家,所以我这里可能做错了什么。
我有一个简单的 Foo Backbone 模型,其默认属性 bars 是一个空数组。我创建了模型的两个实例。我将“a”和“b”添加到第一个模型,“c”和“d”添加到第二个模型。当我使用 console.log() 打印出条形图的内容时,这两个实例似乎是同一个对象。
JsFiddle:http://jsfiddle.net/P7qsz/
代码:
var Foo = Backbone.Model.extend({
defaults: {
bars: []
}
});
var foo = new Foo();
foo.get("bars").push("a");
foo.get("bars").push("b");
console.log(foo.get("bars"));
var foo2 = new Foo();
foo2.get("bars").push("c");
foo2.get("bars").push("d");
console.log(foo2.get("bars"));
在控制台中我看到:
["a", "b", "c", "d"]
["a", "b", "c", "d"]
我做错了什么?
最佳答案
在 javascript 中,数组(和对象)作为引用传递。
在这里,您为每个模型分配了相同的数组引用。
要修复它,您需要每次都分配一个新数组。
Backbone.Model.extend({
initialize: function() {
this.set("bars", []); // Here we set a new array
}
});
关于javascript - Backbone 模型是单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195265/