(function() {
this.Lib = {};
}).call(this);
呼び出されるオブジェクトのプロパティを定義し、Lib
すぐに呼び出されます。this
通常はwindow
. 代わりに、それが呼び出されたメソッドを所有するオブジェクトを参照する場合があります。
(function() {
var Lib = {}; window.Lib = Lib;
})();
Lib
呼び出された場所に関係なく のプロパティを定義しますwindow
(ただし、すぐに呼び出されます)。
(function(global) {
var Lib = {}; global.Lib = Lib;
})(global);
Lib
関数に渡されるオブジェクトのプロパティを定義します。すぐに呼び出されますがglobal
、現在のスコープで値を定義していない限り、エラーが発生します。window
またはいくつかの名前空間オブジェクトをそれに渡すことができます。
これらは実際には「無名関数」を定義する異なる方法ではなく、すべて標準的な方法を使用しています。これらは、グローバル (または事実上グローバル) プロパティに値を割り当てるさまざまな方法です。この意味で、それらは基本的に同等です。
より重要なのは、たとえば、オブジェクトが返す/構築/公開するオブジェクトのメソッドとプロパティをどのように定義するか (つまり、それらLib
自体をどのように構築するか) です。
これらの関数はすべて戻りundefined
ますが、最初の関数だけが ( を使用して) コンストラクターとして有効に適用できるnew
ため、フレームワークのイニシャライザーに過ぎないように見えます。