2017-03-23 12 views
0

eval関数を使用して実現できる投稿を読んだことがありますが、作成者も警告を使用しています。私はそれが重要かどうかわからないが、私はブラウザとwebpackを使用している。あなたはどうしますか?CommonJsモジュールの関数を文字列から呼び出す方法

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

const myFunction =() => {}; 

module.exports = { 
    init 
}; 

答えて

1

トリックは、関数名を実際の関数にマップすることです。

const functionMap = {myFunction}; 

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



const myFunction =() => {}; 

module.exports = { 
    init 
}; 
+0

ありがとうございました!それは動作しますが、ローカルモジュールの関数が参照される名前空間のようなものがあるのだろうかと思います。 –

+0

それは危険です。他の人が何を呼び出せるかを明示的に定義する必要があります。本当にしたいのであれば、 '' 'global''変数を使います:https://nodejs.org/api/globals.html#globals_global – meltuhamy

+0

ああ、ありがとう、素敵な一日を! –

関連する問題