gpt4 book ai didi

在不使用 this 关键字的情况下在上下文中进行 javascript eval

转载 作者:搜寻专家 更新时间:2023-11-01 04:51:30 26 4
gpt4 key购买 nike

我正在尝试在特定上下文中执行 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);
}

with(this) 表达式允许context 对象的成员变量出现在表达式scr 的执行范围内。

归功于 this answer类似的问题

关于在不使用 this 关键字的情况下在上下文中进行 javascript eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40107919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com