Javascript:混合构造函数模式和显示模块模式
有没有办法让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,
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
关键字的目的是什么?