7

モジュールのパターンは理解していると思いますが、一部の例では、次のように JQuery をパラメーターとして渡すのはなぜですか。

Namespace.AppName = (function ($) {
     // Code Here
})(jQuery); 

JQuery を渡さなくても、モジュール内で $() 呼び出しを行うことで、Jquery ライブラリを問題なく使用できます。では、なぜこのようなことをする人がいるのでしょうか?

4

4 に答える 4

16

ここでの考え方は、 IS jQueryであることを確認jQuery$ながら、内部関数を渡すことです。これは、特にmootoolsのように使用する他のライブラリと一緒にjQueryを使用するときに使用$するコードを保護するために一般的に使用されます。$$


たとえば、このコードが<head>

<!--load jQuery-->
<script src="jquery.js"></script>

<script>
    //"$" is jQuery
    //"jQuery" is jQuery 
</script>

<!--load another library-->
<script src="anotherlibrary.js"></script>

<script>
    //"$" is the other library
    //"jQuery" is jQuery 

    //out here, jQuery code that uses "$" breaks

    (function($){
        //"$" is jQuery
        //"jQuery" is jQuery (from the outside scope)

        //in here, jquery code that uses "$" is safe

    }(jQuery));

</script>
于 2012-04-24T11:04:48.657 に答える
1

これは、jQueryのショートカットとして$を使用できるようにするためです。このようにカプセル化しないと、他のライブラリと衝突することがあります。

于 2012-04-24T11:04:24.877 に答える
1

$「安全に」使用するために。ほとんどの開発者は、jQuery の代わりに「$」を使用することに慣れています。

$ をグローバルとして使用すると、他の JS ライブラリと競合する可能性があります。

于 2012-04-24T11:02:59.040 に答える
0

これは、名前空間/スコープが $ をjQuery使用し、$ を使用する Prototype などの他の JS ライブラリではないようにするためです。

于 2012-04-24T11:03:42.577 に答える