2017-03-23 59 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

哦,好的,謝謝,祝你有個美好的一天,好友! –

相關問題