2011-02-28 4 views
1

は、私は次のように包まれているいくつかのJavaScriptコードを継承していますか?jQueryの/ JavaScriptの包まれたコードクエリ

+0

実行閉鎖が – kjy112

+0

のように見えたら、これが重複していますしかし、それは検索するのが難しいです。私は自分自身をdupを見つけることができません。 – zzzzBov

+0

http://stackoverflow.com/questions/5145092/what-is-this-design-pattern-known-as-in-javascript-jquery –

答えて

5

これにより、$がその関数に対してローカルであることが保証されます。したがって、他の一部のライブラリがグローバルの$識別子を使用している場合は競合しません。このようなことの

思う:

// create a function that receives jQuery as an argument 
function keepItLocal($) { 

    // execute your jQuery code in here 
    // where $ is now a reference to jQuery  

}; 

    // invoke the function, passing in the global jQuery 
keepItLocal(jQuery); 

JavaScriptで唯一道範囲に変数が関数であるので、これはグローバルな名前空間の汚染を防止するための一般的なパターンです。私達はちょうどこのやった場合

$ = jQuery; 

$('.someClass').someMethod(); 

を、それが以前に定義された、またはいくつかの他のコードが一緒に来て、それを上書きする可能性がある場合...我々は$を上書きすることができます。

1

jQueryプラグインを記述するための標準パターンです:それは、その後$パラメータによって参照される関数呼び出し、引数としてグローバルjQueryに渡して、すぐに無名関数を呼び出すhttp://docs.jquery.com/Plugins/Authoring

3

これはjQueryのためのalaisingクロージャです。それは、匿名関数を作成することで動作します。その後、

function ($) 
{ 

} 

とパラメータjQueryいるかもしれwindow.$をデフォルトなしjQueryの値を持つように$を強制

​​

ですぐに呼ばれるようにするためにそれを包みます別のライブラリによって上書きされています。

これは、プラグインがjQueryを拡張するために使用する一般的なショートカットです。この場合

jQuery(function($){ 

}); 

、関数はdocument.readyイベントにexectuedするjQueryのファクトリメソッド(jQueryまたは$)に渡され:

はさらにdocument.readyイベントは、同様のエイリアシングショートカットを有しています。パラメータはjQueryになりますが、開発者はエイリアスの名前を好きなもの(通常は$ショートカット)に変更できます。

0

私はクロージャ(あなたが投稿したコードはクロージャです)を使用すると、コード内の他の部分との変数の衝突を避けることができます。

Jamesが説明したように、プラグインはこの理由からこのように正確に記述されています。ところで

、通常は閉鎖がjqueryのでカスタマイズプラグインを書くためにどのような方法厥

(function ($) { 
// do something cool here! 
})(jQuery); 
関連する問題