将coffee脚本转换为javascript-简单扩展

将coffee脚本转换为javascript-简单扩展,javascript,inheritance,coffeescript,Javascript,Inheritance,Coffeescript,我有一些咖啡脚本- class Zoo.CollectionView extends Zoo.View _set_element_attributes: -> @$el.data(view: this) @$el.addClass('collection') return unless @collection? @$el.attr('data-name': @collection.collection_name) @$el.attr('data

我有一些咖啡脚本-

class Zoo.CollectionView extends Zoo.View

  _set_element_attributes: ->
    @$el.data(view: this)
    @$el.addClass('collection')
    return unless @collection?
    @$el.attr('data-name': @collection.collection_name)
    @$el.attr('data-variant': @variant) if @variant?
    @$el.data(collection: @collection, view: this)
我想转换成javascript并尽可能简单。我原以为这样行得通,但它似乎不喜欢我的工作

 Zoo.CollectionView = function() {

 }

 $.extend(Zoo.CollectionView.prototype, Zoo.View.prototype);

 Zoo.CollectionView.prototype._set_element_attributes = function() {
   this.$el.data({
     view: this
   });
   this.$el.addClass('collection');
   if (this.collection == null) {
     return;
   }
   this.$el.attr({
     'data-name': this.collection.collection_name
   });
   if (this.variant != null) {
     this.$el.attr({
       'data-variant': this.variant
     });
   }
   return this.$el.data({
     collection: this.collection,
     view: this
   });
 };

CoffeeScript的
extend
与主干网的
extend
兼容,因此您应该能够做到:

Zoo.CollectionView = Zoo.View.extend({
    _set_element_attributes: function() {
        // This part should be easy and it looks like you
        // have it in hand.
    }
});
我不明白您为什么要尝试将
Backbone.Model
的原型合并到
Zoo.CollectionView

$.extend(Zoo.CollectionView.prototype, Backbone.Model.prototype);

因为你的咖啡脚本没有做任何类似的事情,而且模型和视图都是非常不同的东西。

这非常有效,而且非常简洁。非常感谢。