Open genufish opened 3 years ago
eval代码并不一定是完整的,比如:
`(function(){
let a=1,b='a'; eval('console.info('+b+')'); //实际此处执行console.info(a)
})()`
如果把eval函数重写了,变量a就会无法获得。
建议代理动态修改源码为
let a=1,b='a'; eval(eval_hook('console.info('+b+')')); //由额外的eval_hook对拼装的js代码进行处理返回,再交由eval执行
完毕
eval几乎无法在无副作用的情况下重写,Function没这个问题,不受上下文影响。
eval代码并不一定是完整的,比如:
`(function(){
})()`
如果把eval函数重写了,变量a就会无法获得。
建议代理动态修改源码为
`(function(){
})()`
完毕