Javascript:混合构造函数模式和显示模块模式

Javascript:混合构造函数模式和显示模块模式,javascript,revealing-module-pattern,Javascript,Revealing Module Pattern,有没有办法让Javascript类扩展通过显示模块模式创建的对象?我尝试了下面的代码,但是否还有其他方法可以实现同样的效果 sv.MergeQuestionViewModel = function () { this = sv.QuestionDetailViewModal(); this.init($("#mergeQuestionModel")); }; sv.QuestionDetailViewModal = function () { var $el,

有没有办法让Javascript类扩展通过显示模块模式创建的对象?我尝试了下面的代码,但是否还有其他方法可以实现同样的效果

sv.MergeQuestionViewModel = function () {
    this = sv.QuestionDetailViewModal();
    this.init($("#mergeQuestionModel"));
};  

sv.QuestionDetailViewModal = function () {
    var $el,
        self = this,
        _question = ko.observable(),
        _status = new sv.Status();

    var _init = function (el) {
        $el = el;
        $el.modal({
            show: false,
            backdrop: "static"
        });
    };

    var _show = function () {
        $el.modal('show');
    };

    var _render = function (item) {
        _question(new sv.QuestionViewModel(item));
        _show();
    };

    var _reset = function () {
        _question(null);
        _status.clear();
    };

    var _close = function () {
        $el.modal('hide');
        _reset();
    };

    return {
        init: _init,
        show: _show,
        render: _render,
        reset: _reset,
        close: _close
    };
};

您可以使用
jQuery.extend
来实现这种行为

sv.MergeQuestionViewModel = function () {
    $.extend(this, sv.QuestionDetailViewModal);

    this.init($("#mergeQuestionModel"));
};

sv.QuestionDetailViewModal = (function () {
 var el,

 _init = function($el) {
    el = $el;
    console.log('init', el);
 },

 _render = function() {
    console.log('render', el);
 };

 return {
   init : _init,
   render : _render
 };
}());

var view = new sv.MergeQuestionViewModel();
view.render();

上测试它当然,我意识到代码不起作用,但我也想演示一下我的意图。我的问题是,有没有其他办法来实现这一点。谢谢我99.9%肯定你知道,但我只是想向你保证。我已经更新了我的答案。您在代码中使用
this
关键字的目的是什么?