扩展Marionette.js视图类的方法

时间:2014-01-14 19:30:14

标签: javascript backbone.js marionette

我需要扩展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,我想知道是否有更好的方法?

1 个答案:

答案 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