在扩展 类 时继承而不覆盖 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');
}
});
要继承而不是覆盖像 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');
}
});