扩展类时继承而不是覆盖属性/方法
Inherit and not overriding attributes/methods when extending classes
要继承而不是像onRender/onShow/initialize
那样覆盖方法,我知道我可以使用prototype.onRender.apply()
。 但是有没有一种更干净的继承方式,而不是每次都写它?
两个控制台.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');
}
});
不,在 ES5 中,这几乎是最好的,并且在木偶内部到处使用 - 使用 Backbone 另一种选择是使用 ES6 的__super__
或转译
var MyView2 = MyView.extend({
onRender() {
MyView2.__super__.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
相关文章:
- 如何在mongodb(mongose)中覆盖子文档的数组属性
- 覆盖上下文.属性和函数
- CSS 属性在使用 innerHTML 时被覆盖
- 如何在更改的事件处理程序中忽略Polymer元素上默认属性的初始覆盖
- 角度:覆盖'@'链接或控制器中隔离作用域中的属性
- 正在覆盖Object.obsoe()中的属性
- (Javascript)覆盖对象内置或继承的属性
- 覆盖对象's的长度属性
- 扩展类时继承而不是覆盖属性/方法
- 为什么 Meteor 更新会覆盖我的文档中的现有属性
- 覆盖 Ember 2.x 核心组件中的“视图”级别属性
- 打字稿覆盖构造函数中的扩展属性
- 使用 getter/setter 覆盖 javascript 属性,同时仍访问底层属性
- 我想克隆一个 javascript 类. 将方法添加到克隆的属性中,而不实际覆盖现有方法
- 为什么可以删除窗口的覆盖属性
- 检查全局属性/函数是否已在 JavaScript 中被覆盖
- 如何用html5数据属性覆盖jquery插件选项
- JQuery-显示/隐藏样式属性覆盖css
- 覆盖属性CSSStyleDeclaration.textShadow
- 覆盖属性的HTML输入