Ist es möglich, eine JavaScript-Funktion mit einem zur Laufzeit festgelegten Namen zu erstellen, ohne Auswertung oder unkonventionelle Engine-spezifische Funktionen zu verwenden? ? Ja, das ist jetzt mit ECMAScript 2015 (ES6) und höher möglich.
In ES6 nimmt ein anonymer Funktionsausdruck, der einer Objekteigenschaft zugewiesen ist, den Namen dieser Eigenschaft an Eigentum. Dies kann mit berechneten Eigenschaftsnamen kombiniert werden, um eine Funktion ohne neue Funktion oder Auswertung zu benennen. Zum Beispiel:
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName];
Dadurch wird eine Funktion namens „foo###“ erstellt, wobei ### eine zufällige 1-3-stellige Zahl ist.
Die Namenseigenschaft der Funktion spiegelt den dynamischen Namen wider. Der Kompatibilitätshinweis im obigen Codeausschnitt verweist darauf, dass Edge und Safari den Namen derzeit nicht in Stacktraces anzeigen.
Das obige ist der detaillierte Inhalt vonKönnen Sie zur Laufzeit benannte Funktionen in JavaScript ohne „eval' erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!