Maison > interface Web > js tutoriel > Pouvez-vous nommer dynamiquement des fonctions JavaScript sans utiliser « eval » ou des fonctionnalités non standard ?

Pouvez-vous nommer dynamiquement des fonctions JavaScript sans utiliser « eval » ou des fonctionnalités non standard ?

DDD
Libérer: 2024-11-17 11:08:01
original
640 Les gens l'ont consulté

Can You Dynamically Name JavaScript Functions Without Using `eval` or Non-Standard Features?

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];
Copier après la connexion

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);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal