在扩展 类 时继承而不覆盖 attributes/methods

Inherit and not overriding attributes/methods when extending classes

要继承而不是覆盖像 onRender/onShow/initialize 这样的方法,我知道我可以使用 prototype.onRender.apply()。但是有没有更简洁的继承方式,而不是每次都写呢?

两个console.log都会在new MyView2() ... .show()

时打印
var MyView = Marionette.ItemView.extend({
  onRender: function () {
    console.log('MyView onRender');
  }
});


var MyView2 = MyView.extend({
  onRender: function () {
    MyView.prototype.onRender.apply(this, arguments);
    console.log('MyView2 onRender');
  }
});

不确定我是否答对了你的问题,但你似乎在寻找默认的继承机制:

var MyView = Marionette.ItemView.extend({
  onRender: function () {
    console.log('MyView onRender');
  }
});


var MyView2 = MyView.extend({
  // MyView2 will inherit onRender from MyView
});

MyView2.prototype.onRender === MyView.prototype.onRender // true

不,在 ES5 中,它已经很好用了all over the place internally in Marionette - with Backbone the other option is to use __super__ 或从 ES6

转译
var MyView2 = MyView.extend({
  onRender() {
    MyView2.__super__.onRender.apply(this, arguments);
    console.log('MyView2 onRender');
  }
});