Ich suche nach einer Vanilla JavaScript Lösung.
Angenommen, ich habe eine Funktion mit folgendem Header:
%Vor%Ich muss es so ausführen:
%Vor%Ich möchte es mit argument map anstelle von Positionsargumenten , d. h.
, aufrufen können %Vor%Und ich suche nach einer bereits geschriebenen Lösung, um dies in JavaScript zu tun, da ich eine unbegrenzte Anzahl von Funktionen wie generateEmail oben behandeln kann. Existiert eine solche Bibliothek?
Ich habe Ссылка gesehen, das die Funktionsintrospektion behandelt (Rückgabe der abstrakten Parameterinformation der Funktion). Aber der zweite Teil fehlt - map-call in positional-call.
Bitte sagen Sie mir, ob so etwas existiert.
edit: wenn ich mich nicht klar gemacht habe: Ich möchte nicht die ursprüngliche positional-argument-Funktion verändern. Ich bekomme solche Funktionen von einem externen Anbieter, der seinen Code aktualisieren kann. Ich bevorzuge lieber einen Wrapper, der die ursprüngliche Funktion darunter aufrufen und eine Map-Argument-API außerhalb bereitstellen kann.
Angenommen, Sie haben Zugriff auf introspect
von node-introspect
(das eine Funktion übernimmt und eine geordnete Liste von Argumente Namen), können Sie einfach tun:
Rufen Sie es an:
%Vor%Dies akzeptiert eine Funktion, liest deren Argumentnamen und gibt dann eine Wrapperfunktion zurück, die ein Objekt akzeptiert und die Positionsargumentnamen verwendet, um Eigenschaften aus dem Objektargument in der richtigen Reihenfolge zu ziehen.
Diese Funktion verwendet das Call-Time-Objekt-Argument als Map, um das Array ["firstName", "lastname", "provider"]
in das Array ["John", "Smith", "gmail.com"]
zu transformieren. Dieses Array wird dann mit apply
verwendet, um die Funktion postional-argument aufzurufen.
Ohne externe Bibliotheken zu verwenden,
%Vor% Rufen Sie es einfach mit call(generateEmail, generateEmailObject)
auf.
Etwas wie
%Vor%Aber das endet natürlich in einer Liste von statischen "Mappings".
Tags und Links javascript arguments syntax function dictionary