1

Require.jsのドキュメントの「AMDの理由」というセクションで、次の質問があります。

今日、JavaScriptコードはどのように定義されていますか?

他の答えの中には次のものがあります:

  • すぐに実行されるファクトリ関数を介して定義されます。

私は(少なくとも私はそう思いますが)javascriptファクトリ関数は単にオブジェクトの新しいインスタンスを返す関数であることを理解していますが、この質問の文脈でこれが何を意味するのか理解していません。誰かがこれを説明できますか?

4

2 に答える 2

2

私の推測では、JavaScriptの「ファクトリ関数」とコンストラクター関数の違いについては明確ではありません。Addy Osmaniの本またはこの記事のように、私は通常、「即時呼び出し関数式」またはIIFEというフレーズを目にしますが、IEFFは同じ構造への参照であると思います。IEFFでは(用語を使用して)次の基本的な式があります。

(function () { return {};})();

これは基本的に、関数スコープを作成するために使用されるjavascriptパターン(/ hack)であり、したがって、そのスコープ内のすべてではないが一部のオブジェクトを呼び出し元に公開することを制御できます。「ファクトリー関数」をコンストラクター関数と混同しないでください。newIIFEでキーワードを使用するのではなく、従来のjavascriptコンストラクター関数で使用します。コンストラクター関数は、オブジェクトインスタンスの作成に関するものであり、通常、それぞれが一意の状態を持つ多くのインスタンスを作成します。ファクトリ関数は、クリーンにカプセル化されたモジュールを作成するのに役立ちます。通常、それを1回呼び出すだけで、アプリケーションの存続期間全体にわたって単一のモジュールインスタンスへの参照を取得できます。

于 2012-04-05T05:37:28.570 に答える
0

次のサンプルコードは、WhyAMDで見ることができます。

(function () {
     var $ = this.jQuery;
     this.myExample = function () {};
}());

これは、すぐに実行されるファクトリ関数の例です。したがって、この関数は解釈時に実行されます。そして、この例の前に[JQueryを使用しているため]JQueryのロードを検討する必要があります。それは、私たちの注文に従って必要なJavaScriptファイルをロードするRequireJSの仕事です。

于 2012-09-05T10:14:40.287 に答える