Maison  >  Article  >  interface Web  >  Comment récupérer le nom d'une fonction en JavaScript ?

Comment récupérer le nom d'une fonction en JavaScript ?

DDD
DDDoriginal
2024-10-26 05:42:03435parcourir

How Can You Retrieve a Function's Name in JavaScript?

Accès aux noms de fonctions dans leur portée

La possibilité de récupérer le nom d'une fonction à partir de la fonction elle-même est une technique utile en JavaScript. Cependant, cela peut être difficile car les noms de fonctions ne sont pas facilement disponibles lorsque vous y accédez depuis l'intérieur.

Solution ES6 :

Dans ES6, accéder au nom d'une fonction est simple :

<code class="javascript">const getFunctionName = () => myFunction.name;</code>

Solution ES5 :

Pour ES5, l'approche suivante est recommandée :

<code class="javascript">function getFunctionName(func) {
  const funcStr = func.toString();
  const name = funcStr.substring('function '.length, funcStr.indexOf('('));
  return name;
}</code>

Utilisation de Function.caller ( Non recommandé) :

Function.caller fournit une solution non standard pour accéder au nom de l'appelant. Cependant, il doit être évité en raison de problèmes de compatibilité potentiels et de sa dépréciation en mode strict.

Solution basée sur Regex :

Une autre approche ES5 efficace consiste à utiliser une expression régulière :

<code class="javascript">const getFunctionName = (func) => /function\s+([a-zA-Z$][a-zA-Z$0-9]+)/.exec(func.toString())[1];</code>

Exemple :

Utilisons l'extrait de code fourni comme exemple :

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

Cela affichera : "newFunc" car newFunc est la fonction qui a appelé la fonction parent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn