Heim >Web-Frontend >js-Tutorial >Können Sie JavaScript-Funktionen dynamisch benennen, ohne „eval' oder nicht standardmäßige Funktionen zu verwenden?

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

DDD
DDDOriginal
2024-11-17 11:08:01649Durchsuche

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];

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!

Stellungnahme:
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