为什么每个 jquery 插件都用 (function($) {})(jQuery); 包装

发布于 2024-12-23 09:57:14 字数 326 浏览 1 评论 0原文

每当我看到这样的 jQuery 插件时:

(function($) {
    $.fn.example = function(options) {
        return this.each(function() {
           return 'Example!';
        });
    }

})(jQuery);

我就想知道包装功能:

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

有必要吗?如果是,为什么?如果没有,替代方案/优点是什么?

every time when I see a jQuery plugin like this:

(function($) {
    $.fn.example = function(options) {
        return this.each(function() {
           return 'Example!';
        });
    }

})(jQuery);

I am wondering about the wrapping function:

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

Is it necessary? If yes, why? And if not, what are the alternatives/advantages?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

巾帼英雄 2024-12-30 09:57:14

这样做是为了确保插件在它自己的范围内并且不会干扰任何东西。

许多库使用 $ 作为快捷方式,因此我们传递 jQuery 并将其分配为 $ 以确保它不会干扰。

jQuery 在他们的文档中解释了它的用法: http://docs.jquery.com/Plugins/Authoring

It's done this way to ensure the plugin is in its own scope and doesn't interfere with anything.

A lot of libraries use $ as their shortcut, so we're passing jQuery and assigning it as $ to make sure it doesn't interfere.

jQuery explains its use in their docs: http://docs.jquery.com/Plugins/Authoring

许一世地老天荒 2024-12-30 09:57:14

同意火箭的评论。来自 http://docs.jquery.com/Plugins/Authoring

但是等等!我认识并喜爱的令人敬畏的美元符号在哪里?它是
仍然存在,但是要确保您的插件不会发生冲突
与其他可能使用美元符号的库相比,这是最好的
练习将 jQuery 传递给一个自执行函数(闭包)
将其映射到美元符号,这样它就不会被另一个覆盖
库在其执行范围内。

这也有助于尊重全局命名空间/防止全局命名空间命名空间污染。除非您尝试 - 例如,通过向 window 分配某些内容 - 您创建的任何变量都将保留在您的函数的本地 - 并且您不需要担心与任何其他代码的命名冲突 - 在其他 jQuery 插件或其他 - 包括使用 $

Agreed with Rocket's comment. From http://docs.jquery.com/Plugins/Authoring :

But wait! Where's my awesome dollar sign that I know and love? It's
still there, however to make sure that your plugin doesn't collide
with other libraries that might use the dollar sign, it's a best
practice to pass jQuery to a self executing function (closure) that
maps it to the dollar sign so it can't be overwritten by another
library in the scope of its execution.

This also helps to respect the global namespace / prevent global namespace pollution. Unless you try to - by assigning something to window, for example - any variables you create will be kept local to your function - and you don't need to worry about naming conflicts with any other code - in other jQuery plugins or otherwise - including the use of $.

戒ㄋ 2024-12-30 09:57:14

这基本上是为了给插件一个闭包,其中 $ 符号不会与旁边使用的其他库发生冲突。

This is basically done to give plugin the closure where $ sign doesnt collides with rest of the libraries used along side.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文