次のコード行に遭遇しましたが、理解できませんでした。
これは何ですか (/ ... /)(これ); JavaScriptの目的?このパターンに名前はありますか?
以下のようにコードします。
//Move.js
(function(exports){
exports.Move = function(){
};
})(this);
次のコード行に遭遇しましたが、理解できませんでした。
これは何ですか (/ ... /)(これ); JavaScriptの目的?このパターンに名前はありますか?
以下のようにコードします。
//Move.js
(function(exports){
exports.Move = function(){
};
})(this);
このパターンは「即時呼び出し関数式」です。要するに、ただちに実行される関数です。最後のthis
は、次のようにアクセスされる内部関数に送信されるパラメーターです。exports
(function(exports){
//that was "this" outside, is now "exports" in here
}(this));
あなたの例では、メソッドthis
が追加されたオブジェクトであると想定できます。Move
このパターンを「包含環境」を作成するという意味で「モジュール パターン」と呼ぶ人もいます。そのため、新しい関数スコープにより、内部のものは見えなくなります。言い換えれば、内側にあるものは外側を見るが、外側は内側が見えるものしか見ることができない
そのパターンは、実行時に単純にexports
割り当てられます。this
グローバルスコープとブラウザを想定するとthis
、オブジェクトを指しwindow
ます。
これらの仮定を念頭に置いて、window.Move
IIFE (即時呼び出し関数式) 内に割り当てられた関数を含める必要があります。
この関数がis でthis
はない 別のコンテキストで呼び出された場合、そのメソッドは外部環境にあったwindow
ものに割り当てられます。this
このパターンを「モジュールパターン」と呼びます。さまざまなサブパターンがあり、これは Augmented Module パターンを使用したものです。
まず、モジュールをインポートし、プロパティを追加してからエクスポートします。上記の MODULE を拡張する例を次に示します。
このモジュール パターンの詳細については、 http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth をご覧ください。
一般的な Javascript パターンの詳細については、http://addyosmani.com/resources/essentialjsdesignpatterns/book/ をご覧 ください。