Ist es möglich, eine JavaScript-Funktion mit einem zur Laufzeit bestimmten Namen zu erstellen, ohne Auswertung oder unkonventionelle Engine-spezifische Funktionen zu verwenden ? Ja, dies 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];
Dies erstellt eine Funktion mit dem Namen „foo###“, 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3