5

我正在阅读一本关于 JavaScript 的书,它解释了如何在 JavaScript 应用程序中使用 MVC 模式。在这段代码中,它展示了如何设置控制器。谁能解释为什么 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);
4

3 回答 3

6

最后一行前面没有美元符号,jQuery因为保存 jQuery 的变量的名称是jQuery, not $jQuery。它立即通过$以避免命名冲突。

于 2012-09-11T18:33:30.827 回答
3

简而言之,它确保$在该上下文中没有命名任何其他内容。

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);
于 2012-09-11T18:36:08.610 回答
1

传递给函数的 jQuery 为函数中的 $ 提供参数。换句话说,为了保证函数理解 $ 是 jQuery 对象,传递 jQuery 完整对象名称而不是 $ 快捷方式。这在使用其他 javascript 库并可能竞争 $ 分配的情况下很有帮助。

于 2012-09-11T18:34:58.500 回答