Unterschied zwischen toArray und makeArray in jquery
Ich versuche zu konvertieren, das DOM-element als Sammlungen von Objekt. Aber ich weiß nicht, was der wesentliche Unterschied zwischen toArray() und makeArray()
HTML
<div id="firstdiv">
<div>foo1</div>
<div>foo2</div>
<div>foo3</div>
</div>
Ich verwendete den folgenden code zu konvertieren, Knoten in ein array:
JQUERY
console.log($("#firstdiv > div").toArray());
console.log($.makeArray($("#firstdiv").html()));
Kann ich nicht ganz verstehen, den Unterschied zwischen Ihnen, und die, die ich gesucht habe für diese Frage, aber nicht gefunden, keine klare Erklärung.
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut jQuery Dokumentation:
toArray
ist eine Methode, die auf jQuery-Objekt (das wrapper für eine Gruppe von DOM-Elementen). Diese Methode extrahiert die Mitglieder dieser Gruppe von DOM-Elementen für javascript-Array:makeArray
(das ist eine "statische Methode" auf jQuery-Objekt) nimmt array-artiges Objekt (jQuery, Argumente, nodeList, ...) und erstellt eine korrekte javascript-Array aus, so können Sie Methoden aufrufen des Array auf das Ergebnis:Zusammenfassend
toArray
verwandelt jQuery element set javascriptArray
,makeArray
verwandelt jeden array-Objekt wie javascriptArray
..get()
und.toArray()
?index
position oderundefined
wenn index out of bounds.Der einzige Unterschied ist:
toArray()
istDOM Element Methods
und man kann es nur verwendet auf dom-Elemente. währendmakeArray(object)
kann verwendet werden, auf Ihre eigenen Objekte.Gibt es keine weiteren Unterschiede, Sie sind meist gleich und Rückkehr plain array-Objekt.
Beispiel
Haben Sie alle benutzerdefinierten Objekt:
nun beide Funktion:
während:
und
Wie es bereits erwähnt wurde bereits
toArray()
ist für jQuery-Objekte.$.makeArray()
ist ähnlich zu JSArray.prototype.slice.call()
oder[].slice.call()
kurz, wenn die letztere erzeugt ein Objekt mit[]
Aber es gibt einen Unterschied bei der Verarbeitung von POJOs mit übermäßigen
length
WertBeispiele
1.
2.
3.
4.
Damit
$.makeArray()
gibt einfach die Eingabe-Objekt, wenn ein Schlüssel mit bestimmten index nicht zu finden ist.Wird es funktionieren nur, wenn die Umwandlung array-ähnliche Objekte mit der richtigen Anzahl der Elemente im array z.B. Funktion
arguments
,nodeList
jQuery-Sammlungen, etc.