javascript - Backbone 模型是单例吗?

标签 javascript backbone.js

我不是 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/

相关文章:

javascript - Google Chrome 中对象没有方法 'focus'

javascript - 如何使用 underscore.js 查找字符串是否为空?

javascript - 从 JavaScript 构建 HTML

javascript - Marionette Backbone : Childviews with multiple possible view states

javascript - 如何在模型中的 .fetch() 之后写入从服务器接收的数据并传递给模板?

javascript - Require.js(+文本插件)拒绝加载任何外部文本!模板即使它们位于我自己的主机服务器中?

javascript - 在 Rails 中,如何将 link_to 与谷歌地图一起使用来创建可点击的链接?

javascript - 动态 anchor 上的 jquery .click() 事件不起作用

jquery - JavaScript console.log 导致错误 : "Synchronous XMLHttpRequest on the main thread is deprecated..."

javascript - 将变量分配给 Backbone.js 中的窗口对象