首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不使用此关键字而不使用with语句的上下文/范围中的Javascript - eval

不使用此关键字而不使用with语句的上下文/范围中的Javascript - eval
EN

Stack Overflow用户
提问于 2018-08-06 05:29:00
回答 1查看 108关注 0票数 0

这篇文章提供了如何在特定的上下文/作用域中使用eval的解决方案,而不必在eval的代码中使用this作为所有变量/函数的前缀。javascript eval in context without using this keyword

为了澄清-假设我有以下对象作为eval语句{dog: "labrador"}的上下文。我希望console.log(eval(dog))在不键入eval(this.dog)的情况下输出"labrador“

然而,链接帖子中的解决方案:

代码语言:javascript
复制
function evalInContext(scr, context)
{
    // execute script in private context
    return (new Function( "with(this) { return " + scr + "}")).call(context);
}

使用with语句。考虑到不鼓励使用with语句,是否有其他解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-06 06:37:38

是否有其他解决方案?

当然,但这比with糟糕得多:

代码语言:javascript
复制
 return new Function(...Object.keys(context), scr)(...Object.values(context));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51698396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档