Javascript原型继承vs jQuery扩展

时间:2013-03-13 08:42:08

标签: jquery backbone.js underscore.js marionette prototypal-inheritance

我使用以下代码继承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。

0 个答案:

没有答案