次のコードを使用して、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;
そして、マリオネットの Item ビューから継承した独自の Base.ItemView クラスを派生クラスで使用すると、
View.CreateMyOwnView = Base.ItemView.extend({
プロトタイプの継承を使用すると、render が関数ではないというエラーが表示されます。プロトタイプの継承を使用して基本クラスのインスタンスを調べたところ、render、serializeData、およびその他の多くのプロトタイプ メソッドが Marionette クラスからコピーされていませんでした。しかし、JQuery エクステンドはこれを見事に実現します。
では、プロトタイプ チェーンで jQuery 拡張動作を模倣するにはどうすればよいでしょうか。
ありがとう、マンダー・カトレ。