为了账号安全,请及时绑定邮箱和手机立即绑定

(函数($){})(JQuery)意味着什么?

(函数($){})(JQuery)意味着什么?

阿波罗的战车 2019-07-04 18:36:13
(函数($){})(JQuery)意味着什么?我刚开始编写jQuery插件。我写了三个小插件,但我只是简单地将这一行复制到我的所有插件中,而实际上并不知道它意味着什么。谁能告诉我更多关于这些的事吗?也许有一天,在编写框架时,解释会派上用场:)这是干什么用的?(我知道它以某种方式扩展了jQuery,但对此还有什么有趣的了解吗?)(function($) {})(jQuery);以下两种编写插件的方法有什么区别:第1类:(function($) {     $.fn.jPluginName = {         },         $.fn.jPluginName.defaults = {         }})(jQuery);第2类:(function($) {     $.jPluginName = {         }})(jQuery);第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);我可能离这里很远,也许所有的意思都是一样的。我很困惑。在某些情况下,这,这个似乎没有在我用Type 1编写的插件中工作。到目前为止,类型3对我来说似乎是最优雅的,但我也想知道其他的。
查看完整描述

3 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

首先,代码块看起来像(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的扩展原型接受一个保存插件名称和函数的对象,并将其添加到插件库中。


查看完整回答
反对 回复 2019-07-04
?
动漫人物

TA贡献1815条经验 获得超10个赞

在最基本的层次上,某种形式(function(){...})()是立即执行的函数文字。这意味着您已经定义了一个函数,并立即调用它。

此表单对于信息隐藏和封装非常有用,因为您在该函数中定义的任何内容都是该函数的本地函数,并且无法从外部世界访问(除非您特别公开它-通常是通过返回的对象文字)。

这种基本形式的一个变体是在jQuery插件中看到的(或者在一般的模块模式中)。因此:

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

这意味着您将传递一个引用到实际jQuery对象,但它被称为$在函数文字的范围内。

类型1并不是真正的插件。您只需将一个对象文本赋值给jQuery.fn..通常,您将一个函数分配给jQuery.fn因为插件通常只是函数。

类型2类似于类型1,这里并不是真正创建插件。您只需将一个对象文字添加到jQuery.fn.

类型3是一个插件,但它不是最好或最简单的方法来创建一个。

要了解更多这方面的情况,请看一下类似的问题回答..还有,本页将详细介绍有关编写插件的内容。


查看完整回答
反对 回复 2019-07-04
?
FFIVE

TA贡献1797条经验 获得超6个赞

一点帮助:


// an anonymous function

  

(function () { console.log('allo') });


// a self invoked anonymous function


(function () { console.log('allo') })();

  

// a self invoked anonymous function with a parameter called "$"

  

var jQuery = 'I\'m not jQuery.';


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


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 841 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信