我接手了一个研究项目,并且一直做得很好,除了最近,我想我误解了一些在 Backbone 中实现的 JS 结构。我对模型或集合的结构以及它是否返回对象或函数感到困惑。
该项目具有模型的当前结构:
define([…], function(…) {
var measureModel = Backbone.Model.extend({
defaults: {…},
initialize: function(){…}
…
});
return measureModel; //here there is no function, so I assume its an object
});
对于收藏:
define([…], function(…){
var measuresCollection = Backbone.Collection.extend({
model: measureModel,
initialize: function(){…}
});
return new measuresCollection(); //here I assume it is an function
});
我用上述结构制作了新的模型和集合,但得到了以下错误,所以我也尝试了这个:
define([…], function(…){
return Backbone.Collection.extend({ // here I just return the Object
model: newerModel,
initialize: function(){…}
});
});
遵循第一个结构,在一些新模型和集合上,我得到错误Uncaught TypeError: object is not a function
or Uncaught TypeError: [Object object] is not a function
or Uncaught TypeError: undefined is not a function
,这取决于结尾 return 语句的省略,或者只是直接返回对象。
我在另一个视图中调用构造函数,如下所示:this.newerCollection = new NewerCollection();
- 为什么我会使用相同的结构得到(任何)这些错误?
- 创建变量并返回它和直接返回它有什么区别?
- 为什么我要使用一种方式而不是另一种方式?