Heim  >  Artikel  >  Web-Frontend  >  Wie erstelle ich Funktionen mit laufzeitbestimmten Namen in JavaScript (ohne Auswertung)?

Wie erstelle ich Funktionen mit laufzeitbestimmten Namen in JavaScript (ohne Auswertung)?

Linda Hamilton
Linda HamiltonOriginal
2024-11-12 08:34:01314Durchsuche

How to Create Functions with Runtime-Determined Names in JavaScript (Without Eval)?

Erstellen von Funktionen mit laufzeitbestimmten Namen (ohne Auswertung)

In JavaScript ist das Erstellen von Funktionen mit laufzeitbestimmten Namen in ECMAScript 2015 möglich und später unter Verwendung von zwei Schlüsselfunktionen: anonyme Funktionsausdrücke und berechnete Eigenschaften Namen.

ES2015-Lösung:

In ES2015 erben anonyme Funktionsausdrücke, die Objekteigenschaften zugewiesen sind, den Namen dieser Eigenschaft. Dies ermöglicht uns:

const dynamicName = "foo" + Math.floor(Math.random() * 1000);
const obj = {
  [dynamicName]() {
    throw new Error();
  },
};
const f = obj[dynamicName];

// Demonstrate function's name property
console.log("Function's `name` property: " + f.name);

// Exception handling reveals the name in stack traces
try {
  f();
} catch (e) {
  console.log(e.stack);
}

In diesem Code:

  • dynamicName bestimmt den Namen der Funktion dynamisch.
  • obj ist ein Objekt mit einer Eigenschaft namens DynamicName.
  • Der der Eigenschaft „dynamicName“ zugewiesene anonyme Funktionsausdruck erbt indirekt die Name.

Kompatibilitätshinweis:

Beachten Sie, dass alle modernen Browser die Funktionalität implementieren, Edge und Safari den zugewiesenen Namen jedoch nicht in Stacktraces anzeigen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich Funktionen mit laufzeitbestimmten Namen in JavaScript (ohne Auswertung)?. 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