Heim > Web-Frontend > js-Tutorial > Hauptteil

Können Sie JavaScript-Funktionen dynamisch benennen, ohne „eval' oder nicht standardmäßige Funktionen zu verwenden?

DDD
Freigeben: 2024-11-17 11:08:01
Original
575 Leute haben es durchsucht

Can You Dynamically Name JavaScript Functions Without Using `eval` or Non-Standard Features?

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];
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage