【问题标题】:What is the difference between $() and $.?$() 和 $. 有什么区别?
【发布时间】:2013-08-19 00:56:28
【问题描述】:

我想弄清楚其他开发者使用$()$. 的区别。

就我的理解而言,$() 指的是DOM 中的对象,但我不清楚100% 是如何工作的$.。我以前使用过$. 格式,但一直不明白它是如何工作的。

例如:

$.each(element, function() {});$.fn 等...

如果能对这个主题有所了解和澄清,那就太好了。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

基本上,$() 是一个构造函数 - 你向它传递一个 DOM 选择器,它返回一个 jQuery 对象。

另一方面,$.each $().each$. $().是jQuery的原型函数。

编辑:

我接受@apsillers 的纠正:$().each 是原型函数,但$.(即$.each)直接针对jQuery$

来自 jQuery 的代码示例来支持我的主张:


jQuery.fn = jQuery.prototype = {
   .....
   .....
   .....
   // Execute a callback for every element in the matched set.
   // (You can seed the arguments with an array of args, but this is
   // only used internally.)
   each: function( callback, args ) {
      return jQuery.each( this, callback, args );
   },
   ....
   ....
};

如您所见,$().each 是一个prototype 函数。 jQuery.each 是一个内部方法。直接在jQuery 上定义。

取自jQuery Source Code

【讨论】:

  • 不是构造函数。您不要使用new 调用它。
  • @Quentint 这与我所说的并不矛盾——如果你愿意,你可以使用new $()。能够在没有new 关键字的情况下调用它并不意味着它不是构造函数。
  • 您答案的第一句话还不错,尽管使用new 将其作为构造函数调用会很奇怪。第二句话不对。
  • @losnir "$.each is a prototype function" -- 这是不正确的; $.prototype.each$().each 相同,而不是 $.each
  • @Shivam 那不正确。在$(). 上定义的函数可以从$.prototype 继承。 $. 上的函数是直接定义的。例如,$().each 继承自 $.prototype.each,但 $.ajax$.each(与 $().each 不同的函数!)直接在 $ 上定义。
【解决方案2】:

$ 是一个标识符。它用作变量。它具有分配给它的功能。

() 放在函数后会调用它。 jQuery 分配给它的函数会根据你传递给它的参数类型做很多不同的事情。 (这是可怕的超载)。 (例如,如果您向它传递一个函数,它会在文档就绪事件触发时调用该函数。如果您向它传递一个 HTML 字符串,它将创建该 HTML 的 DOM 表示并将其包装在一个 jQuery 对象中。如果您通过它是一个 DOM 节点,它会将该节点包装在一个 jQuery 对象中。如果你传递给它一个 CSS 选择器,它会在文档中搜索匹配的 DOM 节点并用一个 jQuery 对象包装它们。

在 JavaScript 中,函数是对象。对象可以具有属性。您可以通过$.name_of_property 访问对象的属性。这些属性还可以分配有函数(或其他对象)。

【讨论】:

    【解决方案3】:

    $() 创建一个包含一些元素列表的 jQuery 实例对象。方法

    $ 是唯一的 jQuery 对象,它有一些非实例特定的方法。 (将它们视为“静态”方法,借用其他语言的术语可能会有所帮助)。

    这个唯一的 jQuery 对象,由$ 标识,是一个函数(这就是为什么它可以调用为$())。但是,JavaScript 中的函数是对象,因此它们本身可以具有属性和成员函数。

    【讨论】:

      【解决方案4】:

      $ 只是一个具有短名称的变量,它指向与jQuery 相同的事物。 $()jQuery() 相同(将jQuery 作为函数调用),$.foojQuery.foo 相同。 jQuery.foo 访问jQuery 对象的foo 属性——函数对象也可以有其他属性。

      【讨论】:

        【解决方案5】:

        $ 是 jQuery 对象,而 $() 是对该对象的评估(也是一个函数)。

        $()的含义是(来自http://api.jquery.com/jQuery/):

        返回在基于 DOM 的匹配元素的集合 在传递的参数上或通过传递 HTML 字符串创建

        【讨论】:

          猜你喜欢
          • 2010-10-02
          • 2011-12-12
          • 2010-09-16
          • 2012-03-14
          • 2012-02-06
          • 2011-02-25
          • 2011-11-22
          • 2015-03-26
          • 2012-05-22
          相关资源
          最近更新 更多