在阅读以下性能测试时,我注意到作者使用了$(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)
如果您查看jQuery source code,则可以看到init
执行时调用了$()
。此函数包含多个if
语句,用于处理作为选择器传递的各种信息。在函数结束时,将调用以下内容:
return jQuery.makeArray( selector, this );
如果传递了1
或2
这样的数字,则对makeArray
的调用只会将其转换为[1]
,[2]
等数组等等$(1)
没有什么特别之处。