我使用以下代码继承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({
我使用原型继承得到一个错误,说渲染不是一个函数。当我使用原型继承检查我的基类的实例时,不会从Marionette类复制render,serializeData和许多其他原型方法。但JQuery扩展功能非常出色。
那么,如何在原型链中模仿jQuery扩展行为?
谢谢, Mandar Katre。