2017-03-23 1 views
0

J'ai lu dans un post quelque part qu'il peut être réalisé en utilisant la fonction eval, mais l'auteur a également mis en garde contre son utilisation. Je ne sais pas si c'est important, mais j'utilise le navigateur et le webpack. Comment ferais-tu ceci?Comment appeler une fonction dans un module CommonJs à partir d'une chaîne

const init = (fname) => { 
    console.log(fname); //'myFunction' 
    // How do I call myFunction from string here? 
}; 

const myFunction =() => {}; 

module.exports = { 
    init 
}; 

Répondre

1

L'astuce consiste à mapper un nom de fonction à la fonction réelle.

const functionMap = {myFunction}; 

const init = (fname) => { 
    console.log(fname); //'myFunction' 
    functionMap[fname]() // call functionMap.myFunction 
}; 



const myFunction =() => {}; 

module.exports = { 
    init 
}; 
+0

merci, monsieur! Cela fonctionne, mais je me demande s'il y a quelque chose comme un espace de noms où les fonctions du module local sont référencées. –

+0

C'est dangereux - vous devez définir explicitement ce que les autres peuvent appeler. Si vous voulez vraiment, utilisez la variable '' 'global''': https://nodejs.org/api/globals.html#globals_global – meltuhamy

+0

oh, ok, merci, bonne journée, mon pote! –