1

モジュールパターンを使用してJavaScriptフレームワークを作成しています。これは次のようになります。

var EF = (function(doc) {

    // Main public object
    var e = {
        version: "1.0.0",
        doc: doc,
        log: true
    };

    // Private methods

    var method1 = function(el) {
        <some code>
    }

    var method2 = function(el) {
        <some code>
    }

    var method3 = function(el) {
        <some code>
    }


    // PUBLIC METHODS ASSIGNMENT

    e.method1 = method1;
    e.method2 = method2;
    e.method3 = method3;

    return e;

}(document));

ここで、いくつかのメソッドを別のファイルに移動する必要があると判断しました。開発中は、HTML ファイルに 2 つのファイルを 1 つずつロードし、展開時にはそれらを 1 つのファイルにマージしました。

メソッドの一部を別のファイルに移動して、使用するコードの構造を維持する正しい方法は何ですか?

stackoverflow の回答の 1 つで、次の提案を見ました。

var MODULE = (function (my) {
    var privateToThisFile = "something";

    // add capabilities...

    my.publicProperty = "something";

    return my;
}(MODULE || {}));

私が必要としているものとほとんど同じように見えますが、ファイルとモジュールのプライベート メソッドを示しています。しかし、モジュールにはプライベート メソッドが必要で、モジュールにはパブリック メソッドが必要です。

どのような提案がありますか?

4

1 に答える 1

1

あなたが何を望んでいるのか正確にはわかりませんが、モジュールオブジェクトを介してプライベート関数にアクセスしたいと思います。本質的には、プライベート プロパティへのパブリック ポインターです。

ご不明な点がございましたら、お気軽にお問い合わせください。jsFiddle の問題の例は素晴らしいでしょう。

var myRevealingModule = function () {

    var privateCounter = 0;

    function privateFunction() {
        privateCounter++;
    }

    function publicFunction() {
        publicIncrement();
    }

    function publicIncrement() {
        privateFunction();
    }

    function publicGetCount(){
      return privateCounter;
    }

    // Reveal public pointers to 
    // private functions and properties        

   return {
        start: publicFunction,
        increment: publicIncrement,
        count: publicGetCount
    };

}();

myRevealingModule.start();
于 2013-08-06T02:15:18.613 に答える