2012-09-11 4 views
5

JavaScriptアプリケーションでMVCパターンを使用する方法について説明しているJavaScriptの本を読んでいます。このコードでは、コントローラを設定する方法を示しています。なぜ誰かが、jQueryのドル記号がline3の関数にパラメータとして渡され、最後の行に(jQuery)の前にドル記号がない理由を説明できますか?

var Controller = {}; 
// Use a anonymous function to enscapulate scope 
(Controller.users = function($){ 
    var nameClick = function(){ 
     /* ... */ 
    }; 

    // Attach event listeners on page load 
    $(function(){ 
     $("#view .name").click(nameClick); 
    }); 
})(jQuery); 
+0

適切なインデントの他の変数名を使用するように書き換えることができます。 –

+0

@KevinB最終(jQuery)が実際に関数を呼び出すのであれば、それはそれ自身の行にあるべきではないでしょうか? – Leahcim

+0

いいえ、 '(jQuery)'は 'Controller.users'に格納された関数の引数として' jQuery'を引数として渡しています。これを2行に分けてはいけませんか? 'alert(" Hello World! ")' –

答えて

6

のjQueryを保持する変数の名前がjQuery、ない$jQueryあるので、最後の行のjQueryの前にはドル記号はありません。命名の競合を避けるため、すぐに$として渡されます。

+1

これは(jQuery)です。無名関数を呼び出す?できれば説明してください。私は少し経験の浅いですが(私はそれについていくつかの本を読んだが) – Leahcim

+1

@マイケル:うん! (実際には匿名ではなく、 'Controller.users'にも割り当てられています。) – Ryan

1

関数に渡されるjQueryは、関数の$の引数を指定しています。つまり、$がjQueryオブジェクトであることを関数が認識できるようにするため、$ショートカットの代わりにjQueryのフルオブジェクト名が渡されます。これは、他のjavascriptライブラリが使用されている場合に役立ち、$割り当てを競合する可能性があります。

2

単純に言えば、この文脈では$という名前は付けられていません。

jQuery変数の名前はjQuery$は変数名の有効なシンボルで、jQueryはjQueryオブジェクトを格納するためにこの変数を使用しています。上記のコードは簡単にあなたは何が起こっているか理解するのに役立つかもしれ代わり$

var Controller = {}; 
// Use a anonymous function to enscapulate scope 
(Controller.users = function(myJQueryVariable){ 
    var nameClick = function(){ 
     /* ... */ 
    }; 

    // Attach event listeners on page load 
    myJQueryVariable(function(){ 
     myJQueryVariable("#view .name").click(nameClick); 
    }); 
})(jQuery); 
関連する問題