Maison > interface Web > js tutoriel > Comment convertir une chaîne en appel de fonction en JavaScript sans utiliser « eval » ?

Comment convertir une chaîne en appel de fonction en JavaScript sans utiliser « eval » ?

Mary-Kate Olsen
Libérer: 2024-11-02 06:22:02
original
799 Les gens l'ont consulté

How to Convert a String into a Function Call in JavaScript Without Using `eval`?

Convertir une chaîne en un appel de fonction en JavaScript

Question

Vous disposez d'une chaîne représentant un appel de fonction, telle que :

settings.functionName + '(' + t.parentNode.id + ')'
Copier après la connexion

Vous souhaitez convertir cette chaîne en un véritable appel de fonction, mais sans utiliser eval.

Solution

Au lieu d'utiliser eval, vous pouvez utiliser le code suivant :

var fn = window[settings.functionName];
if(typeof fn === 'function') {
    fn(t.parentNode.id);
}
Copier après la connexion

Ce code :

  1. Obtient une référence à la fonction en accédant à l'objet fenêtre global et en utilisant la propriété settings.functionName comme clé.
  2. Vérifie si le la valeur obtenue est une fonction.
  3. S'il s'agit d'une fonction, l'appelle avec l'argument souhaité.

Exemple

Considérez l'objet de paramètres suivant :

/* Somewhere: */
window.settings = {
  /* [..] Other settings */
  functionName: 'clickedOnItem'
  /* , [..] More settings */
};
Copier après la connexion

Plus loin dans le code, la fonction suivante est définie :

function clickedOnItem (nodeId) {
  /* Some cool event handling code here */
}
Copier après la connexion

Maintenant, vous pouvez utiliser le code présenté dans la solution pour effectuer un appel de fonction :

/* Even later */
var fn = window[settings.functionName]; 
if(typeof fn === 'function') {
    fn(t.parentNode.id);
}
Copier après la connexion

Cela entraînera l'appel de la fonction clickedOnItem avec le t.parentNode.id comme argument.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal