Während die Schnittstelle der Methode .map()
.map( callback(index, domElement) )
ist, ist es $.map( array, callback(elementOfArray, indexInArray) )
für $ .map () ... Irgendeine Idee über den Grund, warum $ .map () die zurückgegebenen Argumente in einer Reihenfolge wie z als Wert-Index?
Wenn Sie die jQuery-API untersuchen, werden Sie feststellen, dass alle Methoden, die an einer Gruppe ausgewählter Elemente arbeiten und Rückrufe akzeptieren, wie zum Beispiel .each
, .html
, .text
usw. den Index der Element als erstes Argument, dh .map
steht hier im Einklang. Normalerweise greifen Sie auf das aktuelle Element mit this
innerhalb des Callbacks zu, dies ist nur ein übliches Muster in jQuery und daher haben die Entwickler vielleicht entschieden, dass es wichtiger ist, den Index als erstes Argument zu haben.
Auf der anderen Seite die native Array.prototype.map
-Methode übergibt den Wert von element als erstes Argument an den Callback, daher scheint es sinnvoll zu sein, dass $.map
auf die gleiche Weise funktioniert, da es eine generische Menge von Items verarbeiten soll.
Ja, es gibt einen Unterschied zwischen jQuery (). map () und jQuery.map ().
Um einige Unterschiede zu skizzieren:
jQuery.map () = Dies neigt dazu, über generische Sammlung zu iterieren
jQuery (). map () = Arrayähnliche Objekte müssen in Arrays umgewandelt werden (.makeArray ())
jQuery.map () = wird hauptsächlich zum Abrufen oder Festlegen des Wertes von verwendet eine Sammlung von Elementen und die Rückgabe dieses neuen Array
Auch .map () ist eine ECMAScript5-Funktion und außerhalb von jQuery definiert (obwohl implementiert). Man fragt sich, ob jQuery (). Map () eine ältere Implementierung war. .map () ist anscheinend schneller!
John Resig stellt fest: "jQuery.map wurde in erster Linie für die Verwendung mit Arrays von DOM-Elementen entworfen (wie in der Dokumentation beschrieben). Aus diesem Grund macht es Dinge wie das Entfernen von null / undefiniert und flacht Arrays von Knoten in ein einzelnes Array. " Dies ist wie in ECMA (Mozilla) definiert. Die andere Implementierung ist Resigs selbst, daher der Unterschied. Das ist kein schlechtes Design !!!!!! Lesen
Zweiter Grund: "Es ist nicht so einfach, es einfach zu reparieren" ... Der Callback von jQuery.map hat eine Parameterreihenfolge, die mit Array.prototype.map übereinstimmt, während die Parameterreihenfolge von jQuery.fn.map mit allen anderen jQuery-Objekt-Iterator-Callbackparamfolgen übereinstimmt oder die andere würde die Rückwärtskompatibilität brechen, die jQuery mit großer Mühe vermeidet " Lesen
Tags und Links jquery