8

次のコード行に遭遇しましたが、理解できませんでした。

これは何ですか (/ ... /)(これ); JavaScriptの目的?このパターンに名前はありますか?

以下のようにコードします。

//Move.js
(function(exports){
  exports.Move = function(){

  };
})(this);
4

3 に答える 3

5

このパターンは「即時呼び出し関数式」です。要するに、ただちに実行される関数です。最後のthisは、次のようにアクセスされる内部関数に送信されるパラメーターです。exports

(function(exports){

    //that was "this" outside, is now "exports" in here

}(this));

あなたの例では、メソッドthisが追加されたオブジェクトであると想定できます。Move

このパターンを「包含環境」を作成するという意味で「モジュール パターン」と呼ぶ人もいます。そのため、新しい関数スコープにより、内部のものは見えなくなります。言い換えれば、内側にあるものは外側を見るが、外側は内側が見えるものしか見ることができない

于 2012-04-05T05:48:11.297 に答える
3

そのパターンは、実行時に単純にexports割り当てられます。this

グローバルスコープとブラウザを想定するとthis、オブジェクトを指しwindowます。

これらの仮定を念頭に置いて、window.MoveIIFE (即時呼び出し関数式) 内に割り当てられた関数を含める必要があります。

この関数がis でthisない 別のコンテキストで呼び出された場合、そのメソッドは外部環境にあったwindowものに割り当てられます。this

于 2012-04-05T05:46:14.517 に答える
1

このパターンを「モジュールパターン」と呼びます。さまざまなサブパターンがあり、これは Augmented Module パターンを使用したものです。

まず、モジュールをインポートし、プロパティを追加してからエクスポートします。上記の MODULE を拡張する例を次に示します。

このモジュール パターンの詳細については、 http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth をご覧ください。

一般的な Javascript パターンの詳細については、http://addyosmani.com/resources/essentialjsdesignpatterns/book/ をご覧 ください。

于 2012-04-05T05:55:36.183 に答える