Что такое $(0) и $(1) для jQuery?

При чтении следующего теста производительности я заметил, что автор использовал $(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");
 }
}
1 ответ

Если вы посмотрите на исходный код jQuery, вы увидите, что init вызывается при выполнении $(). Эта функция содержит несколько операторов if для обработки различных фрагментов информации, передаваемых в качестве селектора. В конце функции вызывается следующее:

return jQuery.makeArray( selector, this );

Если число, такое как 1 или 2, передается, вызов makeArray будет просто преобразовывать его в массив, такой как [1], [2] и т.д. Таким образом, нет ничего особенного в $(1).

licensed under cc by-sa 3.0 with attribution.