要继承而不是覆盖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');
}
});
答案 0 :(得分:0)
不确定我的问题是否正确,但您似乎在寻找默认的继承机制:
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
答案 1 :(得分:0)
NOP,在ES5中,它与它一样好,并且在Marionette中使用all over the place internally - 使用Backbone另一个选项是使用__super__
或从ES6转发
var MyView2 = MyView.extend({
onRender() {
MyView2.__super__.onRender.apply(this, arguments);
console.log('MyView2 onRender');
}
});