4

「モジュール」をセットアップできるJSフレームワークがあります。各モジュールは、 addModule メソッドを呼び出し、モジュールに関する必須のプロパティとオプションのメソッドを含むリテラル オブジェクトを渡すことによって追加されます。例:

framework.addModule({

    id: "test-module",
    init: function () {
        //stuff to do when initializing like set up jQuery bindings

        $("div").click(function () {
            // need access to literal object so I can call:
            something.utility1();
        });

    },

    utility1: function () {
        something.utility2();
    },

    utility2: function () {
      // need access to literal object so I can call:
    }

});

オブジェクト内の任意のコード、任意のレベルで、オブジェクト自体を (「何か」の代わりに) 利用できるようにする最も簡単な方法を見つけようとしています。

私ができる最善this: thisの方法は、オブジェクトにプロパティを追加してから、メソッド内に put をvar module = this追加することです。これは機能しますが、その変数を各モジュールに追加する必要があります。各メソッドに変数を追加する必要がない別の方法があるかどうかを確認したいと思います。ありがとう。

コメントをありがとう、zzzzBov、あなたの提案をありがとう。

ただし、以下のコードが私のニーズに最適に機能するようです。私のチームの開発者は、これらのモジュールを多数作成しており、解決策を明確にする必要があります。電話する必要があると、それが不明確に$.proxyなる可能性があります。それぞれのメソッドを入れるvar module = thisのを避けたいと思っていたので、よりきれいになりますが、それなしでは不可能のようです。

framework.addModule({
    id: "test-module",
    init: function () {
        var module = this;    
        $("div").click(function () {            
            module.utility1();
        });
    },

    utility1: function () {
        var module = this;
        module.utility2();
    },

    utility2: function () {        
    }
});

誰かがよりクリーンなソリューションを持っている場合は、私に知らせてください。

4

1 に答える 1