Maison  >  Article  >  interface Web  >  Comment créer des fonctions avec des noms déterminés par l'exécution en JavaScript (sans évaluation) ?

Comment créer des fonctions avec des noms déterminés par l'exécution en JavaScript (sans évaluation) ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-12 08:34:01270parcourir

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

Création de fonctions avec des noms déterminés par l'exécution (sans évaluation)

En JavaScript, la création de fonctions avec des noms déterminés par l'exécution est réalisable dans ECMAScript 2015 et plus tard, en utilisant deux fonctionnalités clés : les expressions de fonctions anonymes et les propriétés calculées noms.

Solution ES2015 :

Dans ES2015, les expressions de fonction anonymes affectées aux propriétés d'objet héritent du nom de cette propriété. Cela nous permet de :

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);
}

Dans ce code :

  • dynamicName détermine dynamiquement le nom de la fonction.
  • obj est un objet avec une propriété nommée DynamicName.
  • L'expression de fonction anonyme affectée à la propriété DynamicName hérite indirectement de la nom.

Remarque de compatibilité :

Notez que même si tous les navigateurs modernes implémentent la fonctionnalité, Edge et Safari n'affichent pas le nom attribué dans les traces de pile.

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