Tach!
Entscheidend ist der Kontextwechsel! Und bei
xhr.send(formdata)
heißt der Kontext String.Das kann ich nicht als richtig akzeptieren. Die MDN führt eine ganze Reihe von Dingen auf, die XHR.send() akzeptiert.
A body of data to be sent in the XHR request. This can be:
- A Document, in which case it is serialized before being sent.
- A BodyInit, which as per the Fetch spec can be a Blob, BufferSource, FormData, URLSearchParams, ReadableStream, or USVString object.
String ist nur eine der Möglichkeiten.
Das von Dir sehr schön beschriebene Verhalten bezüglich Funktionsargument ist übrigens ganz typisch für OOP/Overload.
MfG