Création de fonctions avec des noms dynamiques en JavaScript
Peut-on attribuer dynamiquement de vrais noms à des fonctions sans recourir à des fonctionnalités d'évaluation ou JavaScript non standard ? Cette question se pose lors de la recherche de fonctions avec des noms identifiables dans des contextes de débogage.
Solution pour ECMAScript 2015 et versions ultérieures (ES6)
ES2015 introduit une solution. L'attribution d'une expression de fonction anonyme à une propriété d'objet donne à la fonction le nom de cette propriété. Ceci, combiné aux noms de propriétés calculés, permet de nommer des fonctions sans s'appuyer sur des constructeurs de fonctions ou des évaluations.
Dans ES2015, l'extrait de code suivant crée une fonction avec un nom dynamique :
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName];
Le le nom de la fonction peut être récupéré via sa propriété name ou observé dans les traces de la pile d'erreurs :
console.log("Function's `name` property: " + f.name + " (see compatibility note)"); try { f(); } catch (e) { console.log(e.stack); }
Notez que certains navigateurs peuvent ne pas afficher le nom 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!