查看一些 Backbone 示例,我看到一些像这样的简单模型:
var Vehicle = Backbone.Model.extend(
{
summary: function () {
return 'Vehicles move';
}
});
或
Vehicle = (function () {
return Backbone.Model.extend({
defaults: {
},
initialize: {
}
});
})();
编辑:(澄清) 我想知道是否有人可以解释定义主干对象的两种方法之间的差异以及更传统的方法。我知道它们内部没有相同的方法,但我更感兴趣的是,在第一个方法中,它们如何扩展主干模型,而在第二个方法中,它们如何将其包装在闭包中。我不确定我是否真正掌握了每种模式的含义以及何时使用哪种模式。提前致谢!
最佳答案
我认为第一种形式更为传统,特别是因为我什至在主 Backbone.js 上看不到第二种形式。根本没有网站。
要了解它们如何做同样的事情,首先请注意 Backbone.Model.extend() 是一个也返回函数的函数:
> Backbone.Model.extend()
function () { return parent.apply(this, arguments); }
因此,变量 Vehicle
最终被设置为一个函数,无论您如何看待它,该函数都是模型构造函数方法。不过,我认为第二种形式更加间接且不必要地复杂:它将 Vehicle
设置为调用函数的结果,该函数本身仅返回 Backbone.Model.extend()
code>,所以它只是表达同一件事的更复杂的方式。
关于javascript - 自定义对象的主干结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15562988/