Backbone模型单身人士?

Ric*_*nop 3 javascript backbone.js

我不是JavaScript专家所以我可能在这里做错了.

我有一个简单的Foo Backbone模型,默认属性栏是一个空数组.我创建了两个模型实例.我将"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"));
Run Code Online (Sandbox Code Playgroud)

在控制台中我看到:

["a", "b", "c", "d"]
["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Sim*_*ias 5

在javascript中,Arrays(和对象)作为引用传递.

在这里,您为每个模型分配了相同的数组引用.

要修复它,您每次都需要分配一个新数组.

Backbone.Model.extend({
  initialize: function() {
    this.set("bars", []); // Here we set a new array
  }
});
Run Code Online (Sandbox Code Playgroud)