为什么大多数 jQuery 插件都是基于结构的:
(function($)
{
// do stuff with $
})(jQuery)
我认为这种结构等同于这种简单的结构:
// do stuff with object 'jQuery'
因为我认为第一个结构定义了一个函数并使用输入参数调用它jQuery
,为什么我们应该这样做,我们可以忽略该函数并使用对象执行我们的代码而jQuery
无需任何附加函数
有人能告诉我为什么第一个结构更好而且更多用过的?
为什么大多数 jQuery 插件都是基于结构的:
(function($)
{
// do stuff with $
})(jQuery)
我认为这种结构等同于这种简单的结构:
// do stuff with object 'jQuery'
因为我认为第一个结构定义了一个函数并使用输入参数调用它jQuery
,为什么我们应该这样做,我们可以忽略该函数并使用对象执行我们的代码而jQuery
无需任何附加函数
有人能告诉我为什么第一个结构更好而且更多用过的?
(function($) {
和部分旨在将})(jQuery)
变量保存在函数内,以避免与其他代码或其他插件发生冲突。
插件函数定义如下:
(function($) {
$.fn.do_stuff = function() {
//Do stuff
}
})(jQuery);
它(几乎完全)是等价的。这样做的原因主要是方便,jQuery
每次都写出来很痛苦,而且它比只使用$
. 但是有一个问题:许多其他流行的 javascript 库都使用一个$
函数,因此 jQuery 可以在不设置全局变量的“无冲突$
”模式下加载。为了让插件在无冲突或正常模式下引用它,它们包括将它包装在您注意到的函数中。
作为一个附带好处,var
“do stuff”区域内的任何语句都成为本地函数,而不是全局函数。