2016-04-04 6 views
0

これは私がAddy Osmaniの本から得たコードスニペットの1つで、その動作を理解できませんでしたか?このコードスニペットはどのように機能していますか(モジュールパターン)(Addy Osmani)ですか?

function library(module) { 
    $(function() { 
    if (module.init) { 
     module.init(); 
    } 
    }); 
    return module; 
} 

var myLibrary = library(function() { 
    return { 
    init: function() { 
     // module implementation 
    } 
    }; 
}()); 
+2

とお聞きください。具体的にする必要があります。あなたは何を理解していませんか? –

+0

jqueryのreadyイベントに渡すlibのinit()メソッドを追加するだけです。 – dandavis

+0

私は実際に全部の仕組みが分からなかったのですか? – user3516328

答えて

3

ブックからのコードを使用すると、定義された変数の名前空間にライブラリ関数を保存することができますモジュールローダ、です。 library関数はモジュールであり(オブジェクトである必要があります)、initメソッドを呼び出して(ライブラリの必要な部分を初期化するために)initプロパティがあるかどうかをチェックし、初期化されたモジュールを返します呼び出し元に。

あなたが混乱していると思われるコードの第2部分は、無名関数を使用してダミーモジュールをライブラリ関数に渡します。コード:

var myLibrary = library(function() { 
    return { 
     init: function() { 
     // module implementation 
     } 
    }; 
}()); 

のようなものを持つことと同じです。

var someModule = { 
    init : function() { 
    // module implementation 
    } 
} 
var myLibrary = library(someModule) 

ここでは、しかし、前のコードスニペットで起こっていただきましたように同じである、)(ライブラリにsomeModuleオブジェクトを渡します前述のコードブロックでは、モジュールオブジェクトをカプセル化する無名関数を実行するので、追加の一時的なローカル変数を作成する必要はありません。

他のものが必要な場合は、

+0

このコード行は何をしますか? $(function(){ ....... }); – user3516328

+1

これは、domが準備ができたら実行するコードブロックです。ライブラリ関数が呼び出され、domが実行可能になるとブロックが実行されます – Alex

関連する問題