我需要扩展marionette.js类,其中包含我在我的应用程序中创建的所有类中的一些功能。
我目前所做的是保存木偶的原始方法并用我自己的方法覆盖它,从内部调用原始方法。
例如:
(function() {
var oldMarionetteItemViewConstructor = Marionette.ItemView.prototype.constructor;
Marionette.ItemView.prototype.constructor = function() {
// Some custom stuff I want to have here
.....
// Call to original constructor
return oldMarionetteItemViewConstructor.call(this, arguments);
}
})();
看起来有些hacky,我想知道是否有更好的方法?
答案 0 :(得分:3)
Marionette提升Backbone.View.extend()方法(它本身实际上是从Underscore.js中提升的)所以你所要做的就是:
var MyFancyView = Marionette.ItemView.extend({
//define your custom stuff here
});
var MyExtendedView = MyFancyView.extend({
//This view picks up the same props/methods form MyFancyView
});
您的模式有效,但原生#extend()
方法会保持您的原型清洁:
https://github.com/jashkenas/underscore/blob/master/underscore.js#L838