Javascript 如何正确扩展两个主干视图

Javascript 如何正确扩展两个主干视图,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,问题:如何以正确的方式扩展BaseView和Marionette.LayoutView 我有:一个类似于: var MyView = BaseView.extend({ initialize: function(options) { this._super(options); // backbone-super.js ... } }); 我想:将MyView移动到木偶视图。有两种方法: 1) 问题是这个。\u super停止工作。我想

问题:如何以正确的方式扩展
BaseView
Marionette.LayoutView

我有:一个类似于:

var MyView = BaseView.extend({
    initialize: function(options) {
       this._super(options); // backbone-super.js
       ...        
    }
});
我想:
MyView
移动到
木偶视图。有两种方法:

1) 问题是
这个。\u super
停止工作。我想
Backbone
试图在
marionete.LayoutView

var MyView = BaseView.extend(Marionette.LayoutView.prototype).extend({
    initialize: function(options) {
       this._super(options); // NOT WORK 
       this.regionManager.addRegions(options.regions); // WORK
       ...        
    }
})
var MyView = Marionette.LayoutView.extend(BaseView.prototype).extend({
    initialize: function(options) {
       this._super(options);  // WORK
       this.regionManager.addRegions(options.regions); // NOT WORK
       ...        
    }
})
2) 这种方法的问题是
MyView.regionManager
未定义。我假设原型指向
BaseView

var MyView = BaseView.extend(Marionette.LayoutView.prototype).extend({
    initialize: function(options) {
       this._super(options); // NOT WORK 
       this.regionManager.addRegions(options.regions); // WORK
       ...        
    }
})
var MyView = Marionette.LayoutView.extend(BaseView.prototype).extend({
    initialize: function(options) {
       this._super(options);  // WORK
       this.regionManager.addRegions(options.regions); // NOT WORK
       ...        
    }
})
试着这样做:

var View = BaseView.extend({
    constructor: function () {
        BaseView.prototype.constructor.apply(this, arguments);
        Backbone.LayoutView.prototype.constructor.apply(this, arguments);
    }
});

_.extend(View.prototype, Backbone.LayoutView.prototype);

我得到了超过最大调用堆栈大小的
。我还将
主干.LayoutView
更改为
木偶.LayoutView
我不知道您的
基本视图发生了什么,但这不会导致无限循环。您所要做的就是调用
BaseView
构造函数,然后调用
LayoutView
构造函数。