具有类结构而不是原型的Backbone.js不是向后的步骤吗?

时间:2011-10-26 12:20:05

标签: javascript backbone.js

我在Backbone.js中是非常新的,所以,backbone.js本质上是将类结构带到javascript?如果是这样,那不是一个向后的步骤吗?根据Douglas Crockford的说法,Javascripts原型更强大。

1 个答案:

答案 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方法。