在js中假定我有一個函數字符串是 var str = "refresh()"
有一個對應的函數是:
如何做到 從str映射調用 refresh呢? 可能有很多人第一想法直接用個object保存一下映射即可,但是有些場景下是不可行的,因為用Object保存的場景只有在你很明確知道 refresh函數存在的情況. 但是在你瘋狂一個插件或者庫的場景時,這個 refresh 是有使用者決定他的名字的,你的插件是完全不知道這個使用者定義的名字,所以使用object保存的方式就不實用!所以用js如何實現反射呢?關鍵就是 eval 這個函數,具體使用方式可以在w3c中找到. 我這里對于這種反射場景的使用事例如下
eval(funcName + "()")如果你的 funcName實際值是 refresh 那么該代碼最后就會調用 refresh()函數
新聞熱點
疑難解答