Zugriff auf Funktionsnamen innerhalb ihres Gültigkeitsbereichs
Die Möglichkeit, den Namen einer Funktion aus der Funktion selbst abzurufen, ist eine nützliche Technik in JavaScript. Dies kann jedoch eine Herausforderung darstellen, da Funktionsnamen nicht ohne weiteres verfügbar sind, wenn man von innen darauf zugreift.
ES6-Lösung:
In ES6 ist der Zugriff auf den Namen einer Funktion unkompliziert:
<code class="javascript">const getFunctionName = () => myFunction.name;</code>
ES5-Lösung:
Für ES5 wird der folgende Ansatz empfohlen:
<code class="javascript">function getFunctionName(func) { const funcStr = func.toString(); const name = funcStr.substring('function '.length, funcStr.indexOf('(')); return name; }</code>
Verwenden von Function.caller ( Nicht empfohlen):
Function.caller bietet eine nicht standardmäßige Lösung für den Zugriff auf den Namen des Anrufers. Aufgrund potenzieller Kompatibilitätsprobleme und seiner veralteten Funktion im strikten Modus sollte dies jedoch vermieden werden.
Regex-basierte Lösung:
Ein weiterer effizienter ES5-Ansatz beinhaltet die Verwendung eines regulären Ausdrucks :
<code class="javascript">const getFunctionName = (func) => /function\s+([a-zA-Z$][a-zA-Z$0-9]+)/.exec(func.toString())[1];</code>
Beispiel:
Lassen Sie uns das bereitgestellte Code-Snippet als Beispiel verwenden:
<code class="javascript">var ns.parent = function() { // at this point, i want to know who the child is that called the parent // ie console.log(getFunctionName(this)); } var obj = new ns.parent.child();</code>
Dies wird ausgegeben: „newFunc“ weil newFunc die Funktion ist, die die übergeordnete Funktion aufgerufen hat.
Das obige ist der detaillierte Inhalt vonWie können Sie den Namen einer Funktion in JavaScript abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!