我正在使用以下代码从 Marionette 的 Item View 类继承:
Base.ItemView = function (options) {
var baseItemViewConstructor = function () {
this._itemViewVent = new Marionette.EventAggregator();
this._itemViewController = null;
this._data = null;
Marionette.ItemView.apply(this, [options]);
};
// inherit from Marionette's Item view
baseItemViewConstructor.prototype = new Marionette.ItemView();
baseItemViewConstructor.prototype = {
constructor: baseItemViewConstructor,
getData: function () {
return this._data;
}
// , many other functions go here.
};
return baseItemViewConstructor;
}();
Base.ItemView.extend = Marionette.ItemView.extend;
使用 jQuery 扩展或下划线扩展的代码是:
jQuery.extend(EY.ATF.Tool.Common.Base.ItemView.prototype, Marionette.ItemView.prototype, {
getData: function () {
return this._data;
}
});
Base.ItemView.extend = Marionette.ItemView.extend;
当我在派生类中使用从 Marionette 的 Item 视图继承的 Base.ItemView 类时,
View.CreateMyOwnView = Base.ItemView.extend({
我使用原型继承得到一个错误,说渲染不是一个函数。当我使用原型继承检查我的基类的实例时,render、serializeData 和许多其他原型方法并没有从 Marionette 类中复制。但是 JQuery 扩展很好地做到了这一点。
那么,如何在原型链中模仿 jQuery 扩展行为呢?
谢谢,曼达卡特。