在js中假定我有一个函数字符串是 var str = "refresh()"
有一个对应的函数是:
如何做到 从str映射调用 refresh呢? 可能有很多人第一想法直接用个object保存一下映射即可,但是有些场景下是不可行的,因为用Object保存的场景只有在你很明确知道 refresh函数存在的情况. 但是在你疯狂一个插件或者库的场景时,这个 refresh 是有使用者决定他的名字的,你的插件是完全不知道这个使用者定义的名字,所以使用object保存的方式就不实用!所以用js如何实现反射呢?关键就是 eval 这个函数,具体使用方式可以在w3c中找到. 我这里对于这种反射场景的使用事例如下
eval(funcName + "()")如果你的 funcName实际值是 refresh 那么该代码最后就会调用 refresh()函数
新闻热点
疑难解答