扩展骨干类并仅覆盖对象的一个​​字段

时间:2014-07-20 00:28:47

标签: javascript backbone.js

我有一个我希望扩展的骨干类(它本身已扩展)。该类有一个选项对象。 在扩展类中,我想覆盖选项对象的一个​​字段。

BaseClass = Backbone.View.extend({

    options: {
        width: 800,
        height: 600,
        wantToOverride: {...}
    },
    ...

    events: {
        'mousedown' : 'onMouseDown'
    }
}


DerivedClass = BaseClass.extend({?????})

实现这一目标的最佳方法是什么?

此外,在新课程中我想添加一个事件,我该怎么做?

1 个答案:

答案 0 :(得分:1)

options将在DerivedClass.__super__.options上可用,constructor在其他任何内容之前运行,因此您可以根据自己的方法组合对象。例如:

DerivedClass = BaseClass.extend({
  options: {
    wantToOverride: 'foo'
  },
  events: {
    'click': 'onClick'
  },
  constructor: function() {
    var parentOptions = this.__super__.options,
        parentEvents = this.__super__.events;

    this.options = _.extend({}, parentOptions, this.options);
    this.events = _.extend({}, parentEvents, this.events);
  }
});

如果许多类都会发生这种情况,你可能想要用这个构造函数设置一个基类,并让一切都继承它。