$()和$之间有什么区别?

Shi*_*vam 3 javascript jquery

我想弄清楚使用$()$.其他开发人员之间的区别.

据我所知,$()指的是内部的对象DOM,但我100%不清楚如何$.工作.我之前使用过该$.格式,但从未理解它是如何工作的.

例如:

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

在这个主题上阐明一些亮点和清晰度会很不错.

Que*_*tin 12

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

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

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


los*_*nir 5

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

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

编辑:

@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 );
   },
   ....
   ....
};
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,$().each是一个prototype函数。jQuery.each是一个内部方法。直接定义在jQuery.

取自jQuery 源代码

  • @Quentint这与我所说的并不矛盾 - 如果您愿意,您可以执行“new $()”。能够在没有“new”关键字的情况下调用它并不意味着它不是一个构造函数。 (4认同)
  • @Shivam 那是不正确的。`$().` 上定义的函数可以继承自 `$.prototype`。`$.` 上的函数是直接定义的。例如,“$().each”继承自“$.prototype.each”,但“$.ajax”和“$.each”(与“$().each”不同的函数!)直接定义在`$`。 (2认同)

aps*_*ers 5

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

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

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