2015-06-11 9 views
5

Ich las Dokumentation auf toArray() hier und testen es in der Konsole. Ich kann den Unterschied zwischen Aufruf toArray() auf einem Selektor und dem Aufrufen des Selektors nicht finden.

Ich habe das gleiche Ergebnis in beiden Richtungen, das ist ein Array von DOM-Elementen mit dem Selektor. Ich habe auch einen weiteren Test

$("element").toArray()[0] === $("element")[0] 

w3schools Nach

Die toArray() Methode gibt die Elemente durch den jQuery Selektor als Array abgestimmt.

Es sieht jedoch so aus, als würde nur das Element abgefragt werden, das genau die gleiche Sache ist. Und es ist viel einfacher zu schreiben.

Kennt jemand den Unterschied zwischen diesen beiden? Wenn nicht, verstehe ich den Zweck dieser Funktion nicht.

+3

'ToArray' gibt Ihnen ein reines js-Array, so dass Sie JavaScript' Array.prototype' Methoden darauf aufrufen können. – AmmarCSE

+0

Wenn Sie auf einzelne Elemente im Array zugreifen, gibt es keinen Unterschied (wie Ihr eigener Test zeigt). Es ist was du mit dem Array selbst machst (rufst du mehr jQuery bei den Ergebnissen an?). –

+2

Versuchen Sie dies und Sie werden sofort sehen, warum ... '$ (" div "). ToArray(). Hide();' – Archer

Antwort

9

Nehmen Sie dieses Beispiel aus the docs:

Wenn Sie so etwas wie $('img').reverse() tun, wird eine Fehlermeldung angezeigt.

Wenn Sie etwas wie $('img').toArray().reverse() tun, erhalten Sie das umgekehrte Array von DOM-Knoten.

Dies ist, weil, wenn Sie nicht zuerst die toArray() durchführen, Sie nicht alle die Array prototype methods Ihnen zur Verfügung haben.

+0

Nun, Für den Datensatz 'typeof' eines beliebigen JavaScript-Arrays wird' object' zurückgegeben. Es gibt andere arrayähnliche Objekte, wie zum Beispiel das 'arguments'-Objekt, das in einem beliebigen Funktionskörper gegeben ist. –

Verwandte Themen