javascript - jQuery 的命名空间如何工作?

标签 javascript jquery syntax

Possible Duplicate:
What does this JavaScript/jQuery syntax mean?

我特别指的是当你这样做时:

(function ($) {
  ...
})(jQuery);

我以前从未见过这种语法。函数是如何被调用的?我明白当你这样做时:

jQuery(function ($) {
  ...
});

因为该函数被传递给 jQuery,当 DOM 准备好时,jQuery 可以运行作为参数传递的任何函数,但第一个不同。

最佳答案

What does this JavaScript/jQuery syntax mean? 的重复项

我将在这里发布我的答案,尽管 Jeff Attwood 似乎希望我们接受重复:( https://blog.stackoverflow.com/2010/11/dr-strangedupe-or-how-i-learned-to-stop-worrying-and-love-duplication/ )

<小时/>

在编写插件时使用此约定,以确保使用 $ 符号与其他 Javascript 库不发生冲突,同时确保插件作者仍然可以使用此符号:

(function($){
    ...
})(jQuery); 

作者声明了一个带有单个参数 ($) 的匿名函数,然后立即调用它并向其传递 jQuery 对象。这确保了函数被调用并且其中的所有内容都被定义。

更长的符号可能是:

function MyDefs($){
    ...
}
MyDefs(jQuery);

尽管这会在全局命名空间中创建一个变量 MyDefs。匿名函数模式将全局命名空间留空,避免冲突。

关于javascript - jQuery 的命名空间如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4285594/

相关文章:

javascript - 在 PHP 的 JQuery Ajax 调用中解析 json

css - 清理和维护大 css 文件的技巧

c++ - 如何在头文件中声明要在两个.cpp 中使用的变量?

javascript - 简单的 JQuery 滑动效果不同步

javascript - 为什么IE7会在没有tabindex的元素上添加tabindex ="0"?

javascript - Highcharts 在可拖动的折线图上重绘和排序数据

jquery - JSONP 和 ASMX 网络服务

haskell - 首先分配一些变量后使用 guard

javascript - 如何在hammer.js中将缩放焦点从图像中心更改为两次触摸的平均值

javascript - 如何使用 laravel 和 Ajax 将响应结果附加到特定类上