Funktionen mit dynamischen Namen in JavaScript erstellen
Kann man Funktionen dynamisch echte Namen zuweisen, ohne auf Auswertungen oder nicht standardmäßige JavaScript-Funktionen zurückgreifen zu müssen? Diese Frage stellt sich, wenn in Debug-Kontexten nach Funktionen mit identifizierbaren Namen gesucht wird.
Lösung für ECMAScript 2015 und höher (ES6)
ES2015 stellt eine Lösung vor. Durch die Zuweisung eines anonymen Funktionsausdrucks zu einer Objekteigenschaft erhält die Funktion den Namen dieser Eigenschaft. In Kombination mit berechneten Eigenschaftsnamen ermöglicht dies die Benennung von Funktionen, ohne auf Funktionskonstruktoren oder Auswertungen angewiesen zu sein.
In ES2015 erstellt das folgende Codefragment eine Funktion mit einem dynamischen Namen:
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName];
The Der Funktionsname kann über seine Namenseigenschaft abgerufen oder in Fehler-Stack-Traces beobachtet werden:
console.log("Function's `name` property: " + f.name + " (see compatibility note)"); try { f(); } catch (e) { console.log(e.stack); }
Beachten Sie, dass bestimmte Browser Der Name wird möglicherweise nicht in Stack-Traces angezeigt.
Das obige ist der detaillierte Inhalt vonKönnen Sie JavaScript-Funktionen dynamisch benennen, ohne „eval' oder nicht standardmäßige Funktionen zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!