0

JavaScript では、コンストラクター関数を含む、すぐに呼び出される無名関数をよく見かけます。このようなもの:

(function(){
    function Constructor{};
    //code and stuff
})();

クロージャ (?) を作成するため、これは有益に思えます。そのため、関数内の変数をグローバル スコープから分離しておくことができます。私が理解できないのは、グローバル スコープ内からこのコンストラクターにアクセスする方法です。たとえば、上記のコードが JavaScript ファイルに含まれており、script タグを使用して HTML ドキュメントに取り込まれたとします。さて、ドキュメント (別の script タグ内) で、無名関数のコンストラクターを使用してオブジェクトをインスタンス化するにはどうすればよいでしょうか?

4

1 に答える 1

2

あなたが述べたように、すぐに呼び出される関数の主な目的は、グローバルスコープの汚染を防ぐことです。したがって、IIFE 内で宣言されたすべての変数と関数は、その関数内でのみアクセスできます。

あなたの例からわかるように、アプリケーションをモジュール化し、さまざまなアプリケーション ロジックを異なるスクリプト ファイルに分離しようとしています。Module Pattern をご覧になることをお勧めします。

var Module1 = (function() {

    return {
        Constructor: function Constructor(){
            console.log('Hi, there!');
        }
    }
})();

次に、次のコードを使用してコンストラクター関数に簡単にアクセスできます。

var test = Module1.Constructor();
于 2014-12-06T22:32:29.980 に答える