我正在阅读一本关于JavaScript的书,该书解释了如何在JavaScript应用程序中使用MVC模式。在此代码中,它显示了如何设置控制器。任何人都可以解释为什么jQuery美元符号作为参数传递给第3行中的函数,然后为什么在最后一行(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 :(得分:6)
在最后一行的jQuery
前面没有美元符号,因为包含jQuery的变量的名称是jQuery
,而不是$jQuery
。它会立即以$
传递,以避免命名冲突。
答案 1 :(得分: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);
答案 2 :(得分:1)
传递给函数的jQuery在函数中提供$的参数。换句话说,为了保证函数理解$是jQuery对象,传递jQuery完整对象名而不是$ shortcut。这有助于其他javascript库正在使用并可能竞争$ assignment。