我正在阅读有关创建自定义 jQuery 插件的内容,并且对以下语法的含义有点困惑:
(function($){
$.fn.truncate = function() {
return this.each(function() {
});
};
})(jQuery);
我知道 function($) 是一个接受 $ 的匿名函数。我只是不太明白为什么这个函数用括号括起来,以及下面带有 jQuery 的括号组是如何工作的。
以下带有 jQuery 的参数只是执行匿名函数并传入 jQuery 作为 $ 参数。 这确保 $ = jQuery 只是在 window.$ 不等于 jQuery 的情况下。
这是对代码的重写,可能更有意义:
function myFunc($) {
$.fn.truncate = function() {
return this.each(function() {
});
}
myFunc(jQuery);
周围的括号创建一个匿名函数,其中
$
符号引用全局 jQuery
对象。
$.fn.truncate
- 这意味着您正在扩展 jQuery
对象以包含一个名为 truncate
的新函数。$( '#someElement' ).truncate();
假设
$
属于 jQuery 库是不安全的。一些其他 javascript 库/用户可能/确实会将该标识符用于其他目的。然而,jQuery
始终是 jQuery 库(除非有任何作恶者)。
这个匿名函数通过将
$
快捷方式设置为匿名函数的本地参数,方便而安全地将其公开为 jQuery。由于参数只会覆盖函数范围内的任何全局变量,因此不会影响函数之外的任何其他用户/库代码。
最后执行匿名函数的地方
jQuery
作为第一个参数传入来填充$
。
所以归根结底,这只是插件开发者为了安全可靠地使用而采取的捷径
$
;如果您不介意在任何地方使用 jQuery
那么这完全是可选的。