"$('selector')"和"$('selector').toArray()"有什么区别?

5
我正在阅读这里有关toArray()的文档,并在控制台中进行测试。我无法找到在选择器上调用toArray()和调用选择器本身之间的区别。
两种方式得到的结果完全相同,都是与选择器匹配的DOM元素数组。我甚至进行了另一个测试。
$("element").toArray()[0] === $("element")[0]

根据w3schools的资料,toArray()方法将由jQuery选择器匹配的元素作为一个数组返回。然而,似乎只是查询元素本身也可以做到完全相同的事情,并且编写起来更容易。有人知道这两者之间的区别吗?如果不知道,我就不明白这个函数的目的了。

3
toArray 将为您提供一个纯的 JavaScript 数组,因此您可以在其上调用 JavaScript 的 Array.prototype 方法。 - AmmarCSE
1
如果您正在访问数组中的单个元素,则没有区别(正如您自己的测试所示)。真正重要的是您对数组本身的操作(您是否在结果上调用更多的jQuery?)。 - Corey Ogburn
2
尝试一下,你会立即明白为什么... $("div").toArray().hide(); - Reinstate Monica Cellio
此外,您可以使用 console.log 检查两个对象以查看它们的差异。 - mossplix
1个回答

9

以下是来自文档的一个例子:

如果您像这样执行$('img').reverse(),将会出现错误。

如果您像这样执行$('img').toArray().reverse(),您将获得反转后的DOM节点数组。

这是因为如果您不先执行toArray(),那么您将无法使用所有很酷的数组原型方法


好的,记录一下,在任何JavaScript数组上使用typeof将返回object。还有其他类似于数组的对象存在,例如在任何函数体中给出的arguments对象。 - Danny Delott

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