In JavaScript sind Funktionen erstklassige Objekte, was bedeutet, dass sie als Argumente an andere Funktionen übergeben werden können. Dies ist eine leistungsstarke Funktion, mit der einige interessante Muster erstellt werden können.
Ein solches Muster ist das "invoke-each"-Muster, bei dem eine Funktion erstellt wird, die jede bereitgestellte Funktion mithilfe der empfangenen Argumente aufruft.
Es gibt mehrere Gründe, warum Sie das Invoke-Each-Muster verwenden möchten.
Erstens kann es dazu verwendet werden, die Details darüber zu abstrahieren, wie eine Reihe von Funktionen aufgerufen werden. Dies ist hilfreich, wenn die Funktion auf komplexe oder sich wiederholende Weise aufgerufen wird.
Zweitens kann damit eine Art „Pipeline“ erstellt werden, bei der die Ausgabe jeder Funktion als Eingabe an die nächste Funktion in der Kette übergeben wird. Dies ist eine bequeme Möglichkeit, eine Reihe von Aktionen aneinanderzureihen. Schließlich kann damit eine
„Tee“-Funktion erstellt werden, die mehrere Funktionen mit denselben Parametern aufruft und die Ergebnisse sammelt. Dies ist für die Protokollierung, das Debuggen oder andere Zwecke nützlich.Wie implementiert man das Invoke-Each-Muster?
Es gibt verschiedene Möglichkeiten, den Aufruf jedes Musters zu implementieren.
function invokeEach(functions, args) { for (var i = 0; i < functions.length; i++) { functions[i].apply(null, args); } }
Function.prototype.apply()
auf. Mit dieser Methode können wir eine Funktion mit einem bestimmten Wert- und Parameterarray aufrufen.Wir verwenden hier die Methode apply()
, da dies eine praktische Möglichkeit ist, Parameter als Array zu übergeben. Sie können auch die MethodeFunction.prototype.call() verwenden, mit der Sie Parameter als separate Werte übergeben können. Beispiel
Vollständiges Beispiel für einen funktionierenden Code unten.<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <div id="result1"></div> <div id="result2"></div> <div id="result3"></div> <script> function foo(x) { document.getElementById("result").innerHTML = 'foo: ' + x; } function bar(x) { document.getElementById("result1").innerHTML = 'bar: ' + x; } function baz(x) { document.getElementById("result2").innerHTML = 'baz: ' + x; } function qux(x) { document.getElementById("result3").innerHTML ='qux: ' + x; } function invokeEach(functions, args) { for (var i = 0; i < functions.length; i++) { functions[i].apply(null, args); } } invokeEach([foo, bar, baz, qux], [5]); </script> </body> </html>
foo(), bar(), baz(),
undqux(). Diese Funktionen geben einfach eine Nachricht mit den bereitgestellten Argumenten aus. Als nächstes definieren wir die Funktion invokeEach()
, die ein Funktionsarray und ein Parameterarray akzeptiert. Diese Funktion durchläuft die bereitgestellten Funktionen und ruft jede Funktion mit den bereitgestellten Argumenten auf.Schließlich rufen wir die Funktion invokeEach()
auf und übergeben dabei vier Funktionen und einen einzelnen Parameter 5. Dies führt erwartungsgemäß dazu, dass jede Funktion mit Argument 5 aufgerufen wird.In diesem Tutorial haben wir uns das Invoke-Each-Muster in JavaScript angesehen. Mit diesem Muster kann eine Funktion erstellt werden, die jede bereitgestellte Funktion mit den empfangenen Argumenten aufruft.
Wir haben gelernt, wie man dieses Muster umsetzt und einige der Gründe, warum Sie es vielleicht verwenden möchten.Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Funktion, die jede bereitgestellte Funktion mithilfe von JavaScript aufruft?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!