使用coffeescript解决backbone.js问题

使用coffeescript解决backbone.js问题,backbone.js,coffeescript,Backbone.js,Coffeescript,我试着跟随Brian Mann制作的优秀教程Backbonerail。不幸的是(对我来说,因为我是个疯子),他在用咖啡脚本。令人困惑的是我对以下代码的假设: class App.Views.Users extends Backbone.View 我认为这相当于: Users = Backbone.View.extend({}); 在纯javascript中。但是,当我将coffeescript代码放在TryOffeeScript中时,我得到: var _ref, __hasProp =

我试着跟随Brian Mann制作的优秀教程Backbonerail。不幸的是(对我来说,因为我是个疯子),他在用咖啡脚本。令人困惑的是我对以下代码的假设:

class App.Views.Users extends Backbone.View
我认为这相当于:

Users = Backbone.View.extend({});
在纯javascript中。但是,当我将coffeescript代码放在TryOffeeScript中时,我得到:

var _ref,
  __hasProp = {}.hasOwnProperty,
  __extends = function(child, parent) { for (var key in parent) { if     (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() {   this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new   ctor(); child.__super__ = parent.prototype; return child; };

App.Views.Users = (function(_super) {
  __extends(Users, _super);

  function Users() {
    _ref = Users.__super__.constructor.apply(this, arguments);
    return _ref;
  }

  return Users;

})(Backbone.View);

我的问题是,我对纯javascript应该生成什么的假设是错误的,是我错误地理解了coffeescript的方法,还是我毫无希望?

coffeescript中的类不能保证它们扩展的类有一个
extend
方法,因此,coffeescript不可能编译成
Backbone.View.extend
,而不具体要求它使用的所有类提供
extend
方法

但是,如果您查看(主干网使用的)的源代码,您会发现它与coffeescript生成和使用的
\u extends
方法非常相似

coffeescript编译版本显然更详细,但实际上我从未注意到
类MyView扩展主干.View
MyView=Backbone.View.extends({};
之间的区别,所以您可能可以使用您喜欢的任何一个


编辑:一个可能的区别实际上是
super
coffeescript关键字,它只有在使用coffeescript类时才起作用。但是,您应该仍然能够使用
复制该功能。通过直接调用超类函数扩展

coffeescript中的类不能保证类他们正在扩展的有一个
extend
方法,因此coffeescript不可能编译到
Backbone.View.extend
,而不特别要求它使用的所有类提供
extend
方法

但是,如果您查看(主干网使用的)的源代码,您会发现它与coffeescript生成和使用的
\u extends
方法非常相似

coffeescript编译版本显然更详细,但实际上我从未注意到
类MyView扩展主干.View
MyView=Backbone.View.extends({};
之间的区别,所以您可能可以使用您喜欢的任何一个

编辑:一个可能的区别实际上是
super
coffeescript关键字,它仅在使用coffeescript类时才起作用。但是,您仍然可以使用
复制该功能。通过直接调用超类函数扩展