【问题标题】:jQuery plugin's syntax is too strangejQuery插件的语法太奇怪了
【发布时间】:2013-10-09 01:33:57
【问题描述】:

我对下面代码中语法“(function($)”和“(jQuery)”的含义有点麻烦。

(function( $ ){
$.fn.myPlugin = function() {
    // Do your awesome plugin stuff here
};})(jQuery);

你能解释一下它们的含义吗?

如果我想将上面代码中的短语“(jQuery)”更改为“(abc)”,那么该怎么做以及如何使用它呢?

感谢您花时间回答我的问题。

【问题讨论】:

  • 如果将jQuery 更改为abc,则闭包内的$ 将是abc 的值,而不是jQuery。如果abc 未定义$.fn.myPlugin 会报错。
  • 那你为什么要把它改成abc呢?
  • 您的问题已经here得到解答。
  • @bertl 哇,乔尔自己回答了!

标签: javascript jquery


【解决方案1】:

function($) 表示该函数采用单个参数,即变量$,它(与任何参数一样)可在函数内部访问。

$.fn.myPlugin 正在使用该参数。

(function...)(jQuery) 正在创建一个自动调用的功能块,将jQuery 作为参数传递。

这样做的目的是确保人们通常用来表示 jQuery 的 $ 别名实际上是传递一个 jQuery 对象,而不是任何其他名为 $ 的变量。

没有充分的理由将jQuery 更改为abc,除非您在变量abc 中有jQuery 实例化。

【讨论】:

    【解决方案2】:

    这是一个立即调用的函数表达式。它允许您 1) 以这样一种方式封装代码,使任何变量都限制在其范围内而不是污染窗口环境,以及 2) 传递您可以在代码中使用的参数。

    在这种情况下,Jquery$ 的形式传入,因此您可以安全地使用$,因为您可以使用$,而不会与可能将其用作别名的任何其他库冲突。

    假设abc 存在,您当然可以传入abcjQuery

    (function($, abc) {
      $.fn.myPlugin = function() {
       console.log(abc);
      }
    }(jQuery, abc));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2013-09-05
      • 2017-12-06
      相关资源
      最近更新 更多