jQuery:$作为参数
我正在读一本关于JavaScript的书,书中解释了如何在JavaScript应用程序中使用MVC模式。在这段代码中,它展示了如何设置控制器。有人能解释为什么jQuery美元符号作为参数传递给第3行中的函数,以及为什么最后一行(jQuery)前面没有美元符号jQuery:$作为参数,jquery,Jquery,我正在读一本关于JavaScript的书,书中解释了如何在JavaScript应用程序中使用MVC模式。在这段代码中,它展示了如何设置控制器。有人能解释为什么jQuery美元符号作为参数传递给第3行中的函数,以及为什么最后一行(jQuery)前面没有美元符号 var Controller = {}; // Use a anonymous function to enscapulate scope (Controller.users = function($){ var nameClick
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);
最后一行的
jQuery
前面没有美元符号,因为保存jQuery的变量的名称是jQuery
,而不是$jQuery
。它立即作为$
传递,以避免命名冲突。传递给函数的jQuery正在函数中为$提供参数。换句话说,为了确保函数理解$jQuery对象,传递的是jQuery完整对象名,而不是$shortcut。这在其他javascript库正在使用并且可能竞争$assignment的情况下很有帮助。简单地说,它确保在该上下文中没有其他名称被命名为$
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);
适当的缩进可能有助于您理解发生了什么。@KevinB如果final(jQuery)实际上正在调用函数,它不应该在自己的行上吗?不,
(jQuery)
正在将jQuery
作为参数传递给存储在控制器中的函数。用户
。你不会把它分成两行吧<代码>警报(“Hello World!”)so is(jQuery);调用匿名函数?如果可以,请解释一下。我有点经验不足(尽管我读过几本关于这方面的书)@Michael:是的!(不过,它并不是真正匿名的;它被分配给Controller.users
)