jQuery - 用于避免全局冲突的最短版本

时间:2011-07-05 12:59:44

标签: jquery

如果我没有传递调用匿名函数的jQuery对象会发生什么:

$(function($) {...} 

而不是

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

它似乎仍然适用于所有脚本,那么为什么要在网络上的任何地方明确地传递它?

1 个答案:

答案 0 :(得分:2)

如果您有另一个使用$作为其主要对象的库,该怎么办?在这种情况下,可能会将第二个库的对象传递给您的函数并且插件中断。

想象一下,你使用我的名为foo的库。在该库中,我使用#作为我的全局对象。要使用我的库,您可以使用#启动代码:

#.getAllLinks().follow();

现在假设您使用另一个像jQuery一样使用$符号作为其根对象的库。 (我认为Google Analytics就是这样一个图书馆)。在这种情况下,要在浏览器中加载的最新库将赢得比赛并控制$符号。在这种情况下,当您想在插件中使用$时,实际上是指错误的库。但是当显式传递jQuery名称时(jQuery的根对象都可以使用$符号或jQuery访问),那么你可以确保在插件的范围内使用jQuery,而不是另一个库。 :)