Backbone.js &引用;未捕获类型错误:未定义不是函数;初始化主干集合

Backbone.js &引用;未捕获类型错误:未定义不是函数;初始化主干集合,backbone.js,Backbone.js,我有一个类似以下内容的主干集合: var FooCollection = Backbone.Collection.extend({ model:Foo, initialize: function (attributes, options) { this.barId = options.barId; } }); var Foo = Backbone.Model.extend({}); 当我尝试初始化它时,我在主干.Collection的\u prepa

我有一个类似以下内容的主干集合:

var FooCollection = Backbone.Collection.extend({
    model:Foo,

    initialize: function (attributes, options) {
        this.barId = options.barId;
    }
});

var Foo = Backbone.Model.extend({});
当我尝试初始化它时,我在
主干.Collection
\u prepareModel()
函数中得到了“Uncaught TypeError:undefined不是函数”

错误呼叫位于
model=new this.model(属性、选项)

//准备要添加到此集合的属性的模型或散列。
_prepareModel:函数(模型、选项){
选项| |(选项={});
如果(!(模型的模型实例){
var attrs=模型;
options.collection=this;

model=new this.model(attrs,options);//在我的实际代码中,
Foo
是在
FooCollection
之后声明的。我没有意识到Javascript不支持转发声明。[headdesk]我遇到了同样的问题。我的问题是我在收集脚本之后加入了我的模型脚本:

<script src="scripts/collections/Classes.js"></script>
<script src="scripts/models/Class.js"></script>

要修复它,我只需将Class.js移到Class.js上方:

<script src="scripts/models/Class.js"></script>
<script src="scripts/collections/Classes.js"></script>


干杯

请记住,
var a=6;
是两件事合一:
var a;
a=6;
。var
声明将被提升到相关范围的顶部,但分配不会被提升。我已经更新了代码示例以反映。
<script src="scripts/models/Class.js"></script>
<script src="scripts/collections/Classes.js"></script>