2017-11-12 1 views
1

현재 자바 스크립트 모듈 패턴 (http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html)을 사용하는 앱을 만들고 있습니다. 자바 스크립트 클래스를이 패턴과 함께 사용하여 클래스가 네임 스페이스 내에 중첩되는 C#과 같은 구조를 만들 수 있습니까?Javascript 모듈 패턴 안에서 클래스를 사용할 수 있습니까?

나는 현재이있어 :

app.modules.foo = class { 
    constructor() { 
     // Module variables 
    } 

    // Module functions 

    get init() { 
     // Module initialization function 
    } 
} 

나는 다음과 같이 호출 할 것이다 :

var app = { 
    modules: {}, 
    init: function() { 
     "use strict"; 

     this.modules.foo.init(); 
    } 
}; 

window.addEventListener("DOMContentLoaded", function() { 
    app.init(); 
}); 
+1

물론 가능합니다. 그것은 작동, 그렇지? – Bergi

+0

그것은 작동하지 않았지만 '새로운'키워드를 추가하는 것을 잊었 기 때문에 발견되었습니다. 지금은 다음과 같다 :'app.modules.foo = 새로운 클래스 { 생성자() { // 모듈 변수 } // 모듈 기능 초기화()를 얻을 { // 모듈 초기화 함수 } }' – Gilbert

+0

'app.modules.foo = (function() {})();'대신에 이것을 사용할 이유가 있습니까? 클래스를 확장 할 수 있기 때문에 클래스를 더 유용하게 사용할 수는 있지만 모듈 패턴 내부에서이 클래스를 사용하는 사람은 본 적이 없다고 생각합니다. – Gilbert

답변

0

물론을! 모듈을 인스턴스화 할 수있는 클래스가 아닌 싱글 톤 객체를 나타내는 것처럼 보이십니까? 이런 경우 경우, 각 모듈 폐쇄 내부 https://github.com/jojois74/recycle.js

체크 아웃, 당신은 객체 var obj = {}; 속성을 추가를 만들 수 있습니다; obj.foo = function() {/*etc*/}; 그런 다음 반환 : return obj.

은 자세한 내용은 readme.md를 살펴 보자.

+1

이것은 매우 유망 해 보입니다. 확실히 그것을 살펴볼 것입니다. 감사! – Gilbert

관련 문제