Dynamische Funktionserstellung ohne Auswertung
Frage: Ist es möglich, eine Funktion mit einem zur Laufzeit bestimmten Namen zu erstellen? ohne auf eval() zurückzugreifen und nur reines JavaScript zu verwenden?
Antwort für ECMAScript 2015:
Ja, ES2015 führt eine Lösung ein. Anonyme Funktionsausdrücke, die Objekteigenschaften zugewiesen sind, erben jetzt den Eigenschaftsnamen als Funktionsnamen. Dies kann mit berechneten Eigenschaftsnamen kombiniert werden, was die Erstellung von Funktionen mit dynamischen Namen ermöglicht.
Beispiel:
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName]; console.log("Function's `name` property: " + f.name); // Logs: "foo###" (where ### is 1-3 digits)
In ES2015 stellt diese Methode sicher, dass die Funktion einen Namen hat und dass dieser erscheint in Stacktraces in Debuggern. Beachten Sie jedoch, dass Edge und Safari den Funktionsnamen möglicherweise nicht in Stacktraces anzeigen.
Das obige ist der detaillierte Inhalt vonKönnen Sie in JavaScript dynamisch benannte Funktionen erstellen, ohne „eval()' zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!