2017-11-12 8 views
1

私は現在、javascriptモジュールパターン(http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html)を使用するアプリを開発中です。このパターンと組み合わせてjavascriptクラスを使用して、クラスがネームスペース内にネストされているC#のような構造を作成できますか?Javascriptモジュールパターン内でクラスを使用できますか?

私は現在、この持っている:

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

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

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

もちろん可能です。それはうまくいく? – Bergi

+0

それは動作しませんでしたが、私は '新しい'キーワードを追加するのを忘れていたことがわかりました。今ではこのようになります: 'app.modules.foo =新しいクラス{ コンストラクタ(){// モジュール変数 } //モジュールの機能 のinit(){取得 //モジュールの初期化機能 } } ' – Gilbert

+0

' app.modules.foo =(function(){})(); 'の代わりにこれを使う理由はありますか?クラスは拡張可能だが、これをモジュールパターン内で使用している人は誰も見ていないので、クラスがより有用であると期待している。 – Gilbert

答えて

0

確かに:私は、このように呼ぶだろう

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

    // Module functions 

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

を!モジュールがインスタンス化できるクラスではなく、シングルトンオブジェクトを表現しようとしているようですね。 このような場合は、各モジュールの閉鎖内部 https://github.com/jojois74/recycle.js

をチェックアウトするには、オブジェクトのプロパティを追加します var obj = {}; を作成することができます。 obj.foo = function() {/*etc*/}; そして、それを返す: return obj.

詳細についてはreadme.mdを見てみましょう。

+1

これは非常に有望です。間違いなくそれを見ようとします。ありがとう! – Gilbert

関連する問題