Tach!
Und noch etwas: Die FormData Instanz kennt eine Methode getAll(); damit ist es möglich. sämtliche Daten wiederherzustellen.
Ja, ist aber nicht weiter relevant im vorliegenden Fall.
URLSearchParams jedoch benötigt einen Query-String (enctype="application/x-www-form-urlencoded"), kann also mit einem FormData Objekt gar nichts anfangen. document.querySelector() kann einen Query-String auch nur dann finden wenn der im DOM abgelegt ist.
Ach, das ist dein Verständnisproblem. Der Konstruktor von URLSearchParams() kann nicht nur einen Querystring entgegennehmen, sondern auch eine Sequenz entgegennehmen, deren Elemente jeweils eine Sequenz von zwei Strings ist, also ein "Array of Arrays of two Strings". In Code ausgedrückt beispielsweise:
[['foo', 'bar'], ['qux', 'baz'], ...]
Ein FormData-Objekt ist genau eine solche Sequenz. Das heißt, wenn man über ein FormData iteriert, bekommt man mit jedem Schritt eines der inneren Arrays.
Und aus diesen auf diese Weise eingelesenen Daten erzeugt URLSearchParams() dann beim toString() einen Querystring. Womit man den Serialisierungsteil der Funktionalität von jQuery.serialize() hat.
dedlfix.