jQuery中的$(0)和$(1)有什么作用?

9
在阅读以下性能测试时,我注意到作者使用了$(0)$(1)。这是什么目的?

http://jsperf.com/scriptjunkie-premature-3

var $a = $(0);

function fn_1() {
 var $a = $(this);
 if ($a.attr("rel") == "foo") {
  $a.addClass("foo");
 }
 else {
  $a.addClass("other");
 }
}

function fn_2() {
 $a.context = $a[0] = this; // fake the collection object
 if ($a.attr("rel") == "foo") {
  $a.addClass("foo");
 }
 else {
  $a.addClass("other");
 }
}

无论这种行为是什么,它都没有记录。 $(0) => []$(1) => [1](以及 $(2) => [2]),但我不知道为什么 :/ - Matchu
2
你读过这个测试链接所指向的文章吗? - Felix Kling
谢谢@FelixKling,我没有注意到有一个链接!我一开始是在阅读这个 =] - Ton
1个回答

1

如果你查看jQuery源代码,你会发现当执行$()时会调用init函数。该函数包含多个if语句来处理传递的各种选择器信息。在函数末尾会调用以下内容:

return jQuery.makeArray( selector, this );

如果传递一个数字,如12,则对makeArray的调用将只是将其转换为数组,例如[1][2]等。因此,$(1)并没有什么特别之处。

那么它的目的是什么呢?为什么不使用 $a = $()$a = $(true)$a = [1] - user166390

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接