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

标签 javascript backbone.js

我有一个我想要扩展的主干类(它本身是扩展的)。该类有一个选项对象。 在扩展类中,我想覆盖选项对象的字段之一。

BaseClass = Backbone.View.extend({

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

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


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

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

此外,假设在新类(class)中我想添加一个事件,我该怎么做?

最佳答案

选项将在DerivedClass.__super__.options上可用,并且构造函数在其他任何事情之前运行,因此您可以将对象组合为你认为这种方法合适。例如:

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);
  }
});

如果许多类都会发生这种情况,您可能需要使用此构造函数设置一个基类,并从中继承所有内容。

关于javascript - 扩展主干类并仅覆盖对象的一个​​字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24846249/

相关文章:

javascript - Angular UI-Router 与定义的状态不匹配

javascript - React setstate 采用以前的值

使用 Jasmine 测试 Backbone 模型的触发方法

javascript - NodeJS 和 Backbone 的 fetch

javascript - Backbone.js: 将 View 、集合、模型分离到不同的js文件中,它们不能相互识别

JavaScript 函数问题

javascript - 与注入(inject) mapDispatchToProps 相比,注入(inject) actionCreators 有什么好处?

javascript - Flip Card CSS 强制我以 px 为单位添加高度

javascript - Ember 或 Backbone 是否适合具有大量类似 View 和数据的应用程序?

javascript - Backbone Marionette 和 RequireJS 模块混淆——模块似乎未定义