我正在尝试在特定上下文中执行 eval 。我已经找到答案了here有用。但是,我在 Chrome 版本 53.0.2785.143 m 中遇到以下行为。其他浏览器没试过。我正在使用的代码如下:
function evalInContext(js, context) {
return function() { return eval(js); }.call(context);
}
console.log(evalInContext('x==3', { x : 3})) // Throws
console.log(evalInContext('this.x==3', { x : 3})) // OK
不过我预计第一个电话是evalInContext
不要扔。有什么想法为什么会发生这种情况吗?
同时我推荐@trincot 提供的答案,特别是很棒的链接。我在这里发布我遇到的问题的解决方案
function evalInContext(scr, context)
{
// execute script in private context
return (new Function( "with(this) { return " + scr + "}")).call(context);
}
The with(this)
表达式允许的成员变量context
对象存在于表达式的执行范围中scr
.
归功于这个答案对于类似的问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)