2012-12-22 2 views
2

공개 모듈 패턴을 통해 생성 된 객체를 확장하는 Javascript 클래스를 사용할 수있는 방법이 있습니까? 나는 다음 코드를 시도했지만 같은 것을 달성하기 위해 멀리 떨어져 있는가?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 
    }; 
}; 
+0

가능한 중복 [JS는 프로토 타입 패턴을 공개 상속을 구현하는 방법?] (http://stackoverflow.com/questions/9248655/how-to-implement-inheritance-에

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(); 

테스트를 in-js-revealing-prototype-pattern) – Bergi

+0

어떤 목적으로 코드에서'this' 키워드를 사용하고 있습니까? – Bergi

답변

2

이 동작을 수행하려면 jQuery.extend을 사용할 수 있습니다. http://jsfiddle.net/GEGNM/

+0

물론 코드가 작동하지 않는다는 것을 알았지 만 내가하고 싶은 것을 보여주고 싶었습니다. 내 질문에이를 달성하기위한 대안이 있습니다. 감사! – Abe

+0

99.9 %는 당신이 그것을 알고 있다고 확신했지만, 나는 그것을 확신하고 싶었습니다. 나는 나의 대답을 업데이트했다. – nekman