有人可以解释一下定义 jQuery 插件时语法的含义吗?

问题描述 投票:0回答:3

我正在阅读有关创建自定义 jQuery 插件的内容,并且对以下语法的含义有点困惑:

(function($){  
    $.fn.truncate = function() {  
        return this.each(function() { 
        });
     };
})(jQuery);

我知道 function($) 是一个接受 $ 的匿名函数。我只是不太明白为什么这个函数用括号括起来,以及下面带有 jQuery 的括号组是如何工作的。

javascript jquery iife
3个回答
5
投票

以下带有 jQuery 的参数只是执行匿名函数并传入 jQuery 作为 $ 参数。 这确保 $ = jQuery 只是在 window.$ 不等于 jQuery 的情况下。

这是对代码的重写,可能更有意义:

function myFunc($) {   
 $.fn.truncate = function() {   
    return this.each(function() {   
 });   
}

myFunc(jQuery);

4
投票

周围的括号创建一个匿名函数,其中

$
符号引用全局
jQuery
对象。

$.fn.truncate
- 这意味着您正在扩展
jQuery
对象以包含一个名为
truncate
的新函数。
使用
$( '#someElement' ).truncate();


3
投票

假设

$
属于 jQuery 库是不安全的。一些其他 javascript 库/用户可能/确实会将该标识符用于其他目的。然而,
jQuery
始终是 jQuery 库(除非有任何作恶者)。

这个匿名函数通过将

$
快捷方式设置为匿名函数的本地参数,方便而安全地将其公开为 jQuery。由于参数只会覆盖函数范围内的任何全局变量,因此不会影响函数之外的任何其他用户/库代码。

最后执行匿名函数的地方

jQuery
作为第一个参数传入来填充
$

所以归根结底,这只是插件开发者为了安全可靠地使用而采取的捷径

$
;如果您不介意在任何地方使用
jQuery
那么这完全是可选的。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.