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