0

我正在使用以下代码从 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 扩展行为呢?

谢谢,曼达卡特。

4

0 回答 0