Backbonejs永不结束的收集内部模型



为什么backbonejs在一个模型中创建了很多集合,我不知道它什么时候停止。

以http://backbonetutorials.com/what-is-a-collection/为例。如果你查看控制台并一直打开d对象,其中总会有一个'collection'对象,它只是重复了相同的对象。

我不知道这是一个错误还是什么,但我真的不相信这是正常的。

谁来开导我一下。谢谢。

var Song = Backbone.Model.extend({
    defaults: {
        name: "Not specified",
        artist: "Not specified"
    },
    initialize: function(){
        console.log("Music is the answer");
    }
});
var Album = Backbone.Collection.extend({
    model: Song
});
var song1 = new Song({ name: "How Bizarre", artist: "OMC" });
var song2 = new Song({ name: "Sexual Healing", artist: "Marvin Gaye" });
var song3 = new Song({ name: "Talk It Over In Bed", artist: "OMC" });
var myAlbum = new Album([ song1, song2, song3]);
console.log( myAlbum.models ); // [song1, song2, song3]

@ryan

是的,我理解模型可能包含对其集合的引用。但是这种似乎没有尽头的链状物体有点奇怪。对象树是这样的:

[d, d ,d]
   0 > d
        > collection
            > models
                 0 > d
                      > collection
                           > models
                                0 > d
                                     > collection
                                           > models
                                                  0 > d
                                                   ...
                                                   keeps on and on and on

没有问题。它们只是参考资料。每个Song都包含对其集合Album的引用,一旦它被添加到该集合中。

更新。也许这个简单的例子会帮助你理解没有什么是不正常的。这基本上就是脊椎骨在做的事情。它的唯一目的是方便地导航collection -> useruser -> collection

var site = { name: 'stackoverflow' };
var users = [{ name: 'pneftali' }];
for (var i = 0; i < users.length; i++) {
    users[i].site = site;
}
site.users = users;
console.log(site.users);

每个model都有对collection的引用。每个collection都必须引用它的models。Javascript只保存对集合的引用。开发人员工具栏只显示参考的详细信息。它们实际上并没有相互嵌套。有相同的对象。您可以从模型cid中确认,它不会沿着链向下更改。

最新更新