我在Backbone.js中是非常新的,所以,backbone.js本质上是将类结构带到javascript?如果是这样,那不是一个向后的步骤吗?根据Douglas Crockford的说法,Javascripts原型更强大。
答案 0 :(得分:5)
Backbone使用原型。尽管Backbone看起来如此,但JavaScript中没有“类结构”。
例如:
Backbone.Model.prototype.sayFoo = function(){
alert("foo");
};
MyModel = Backbone.Model.extend({});
m = new MyModel();
m.sayFoo(); // => "foo" alert box
我一直在Backbone中使用原型,Backbone的创建者(Jeremy Ashkenas)也在Backbone中使用它们。
您所看到的“类结构”是用于定义对象上方法的对象文字。
此:
Backbone.Model.extend({
initialize: function(){
}
});
与此完全相同的代码:
var myDef = {
initialize: function(){
}
};
Backbone.Model.extend(myDef);
唯一的区别是在第二个版本中,我将对象定义声明为变量,而不是直接将其传递给Model extend方法。