(function($) {})(jQuery); 是什么意思?意思是?

2024-01-06

我刚刚开始编写 jQuery 插件。我编写了三个小插件,但我只是将这行代码复制到我的所有插件中,而实际上并不知道它的含义。有人可以告诉我更多关于这些的信息吗?也许有一天在编写框架时解释会派上用场:)

这是做什么的? (我知道它以某种方式扩展了 jQuery,但是还有什么其他有趣的事情需要了解吗)

(function($) {

})(jQuery);

以下两种编写插件的方式有什么区别:

Type 1:

(function($) {
    $.fn.jPluginName = {

        },

        $.fn.jPluginName.defaults = {

        }
})(jQuery);

Type 2:

(function($) {
    $.jPluginName = {

        }
})(jQuery);

Type 3:

(function($){

    //Attach this new method to jQuery
    $.fn.extend({ 

        var defaults = {  
        }  

        var options =  $.extend(defaults, options);  

        //This is where you write your plugin's name
        pluginname: function() {

            //Iterate over the current set of matched elements
            return this.each(function() {

                //code to be inserted here

            });
        }
    }); 
})(jQuery);

我可能离这里很远,也许所有人的意思都是一样的。我很困惑。在某些情况下,this似乎不适用于我使用类型 1 编写的插件。到目前为止,类型 3 对我来说似乎是最优雅的,但我也想了解其他类型。


首先,一个代码块看起来像(function(){})()只是一个就地执行的函数。让我们把它分解一下。

1. (
2.    function(){}
3. )
4. ()

第 2 行是一个普通函数,用括号括起来,告诉运行时将函数返回到父作用域,返回后,函数将使用第 4 行执行,也许阅读这些步骤会有所帮助

1. function(){ .. }
2. (1)
3. 2()

您可以看到,1 是声明,2 是返回函数,3 是执行函数。

一个如何使用它的例子。

(function(doc){

   doc.location = '/';

})(document);//This is passed into the function above

至于关于插件的其他问题:

类型 1:这实际上并不是一个插件,它是一个作为函数传递的对象,因为插件往往是函数。

类型 2:这又不是一个插件,因为它没有扩展$.fn目的。它只是 jQuery 核心的扩展,尽管结果是相同的。这是如果要添加toArray等遍历函数的话。

类型3:这是添加插件的最佳方法,jQuery 的扩展原型采用一个包含您的插件名称和功能的对象,并将其添加到您的插件库中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(function($) {})(jQuery); 是什么意思?意思是? 的相关文章