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

Aca*_*uza 2 javascript backbone.js

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

Der*_*ley 5

Backbone使用原型.尽管Backbone看起来如此,但JavaScript中没有"类结构".

例如:


Backbone.Model.prototype.sayFoo = function(){
  alert("foo");
};

MyModel = Backbone.Model.extend({});

m = new MyModel();
m.sayFoo(); // => "foo" alert box
Run Code Online (Sandbox Code Playgroud)

我一直在Backbone中使用原型,Backbone(Jeremy Ashkenas)的创建者也在Backbone中使用它们.

您所看到的"类结构"是用于定义对象上的方法的对象文字.

这个:

Backbone.Model.extend({
  initialize: function(){
  }
});
Run Code Online (Sandbox Code Playgroud)

与此完全相同的代码:

var myDef = {
  initialize: function(){
  }
};

Backbone.Model.extend(myDef);
Run Code Online (Sandbox Code Playgroud)

唯一的区别是在第二个版本中,我将对象定义声明为变量,而不是直接将其传递给Model extend方法.

  • 文档并不重要.他本可以使用"foo"这个词,而不会改变代码的工作方式.使用"类"可能有助于人们在不了解原型继承的所有细节的情况下理解正在发生的事情.那个,Jeremy创建了CoffeeScript,它确实有一个"class"关键字,所以它可能会因此而流血. (3认同)