2011-07-05 10 views
0
私は無名関数を呼び出すjQueryオブジェクトを渡さない場合はどうなりますか

jQueryの - グローバルな衝突を避けるための最短バージョン

$(function($) {...} 

の代わりに、まだすべてのスクリプトで動作しているようです

$(function($) {...} (jQuery); 

をそれでなぜネット上のどこにでも述べられているように明示的にそれを渡すのですか?

+0

これについて詳しくは、jQueryのnoConflictドキュメントを参照してください。 http://api.jquery.com/jQuery.noConflict/ – Tim

答えて

2

$をメインオブジェクトとして使用する別のライブラリをお持ちの場合はどうなりますか?その場合、2番目のライブラリのオブジェクトが関数に渡され、プラグインが破損する可能性があります。

fooという名前の私のライブラリを使用するとします。その図書館では、グローバルオブジェクトとして#を使用します。マイライブラリを使用するには、よう#を使用してコードを開始します。

#.getAllLinks().follow(); 

今、あなたはまだjQueryのようにそのルートオブジェクトとして$記号を使用して別のライブラリを使用することを想像してみてください。 (私はGoogle Analyticsはそのようなライブラリだと思う)。その場合、ブラウザーにロードする最新のライブラリーは、レースで勝利し、$サインを制御します。この場合、プラグインに$を使用する場合は、実際に間違ったライブラリを参照しています。しかし、明示的にjQueryの名前を渡すと(jQueryのルートオブジェクトは両方とも$ signまたはjQueryを使ってアクセスできます)、プラグインのスコープ内で別のライブラリではなくjQueryを使用することができます。 :)

関連する問題