这篇文章提供了如何在特定的上下文/作用域中使用eval的解决方案,而不必在eval的代码中使用this
作为所有变量/函数的前缀。javascript eval in context without using this keyword
为了澄清-假设我有以下对象作为eval语句{dog: "labrador"}
的上下文。我希望console.log(eval(dog))
在不键入eval(this.dog)
的情况下输出"labrador“
然而,链接帖子中的解决方案:
function evalInContext(scr, context)
{
// execute script in private context
return (new Function( "with(this) { return " + scr + "}")).call(context);
}
使用with
语句。考虑到不鼓励使用with
语句,是否有其他解决方案?
发布于 2018-08-06 06:37:38
是否有其他解决方案?
当然,但这比with
糟糕得多:
return new Function(...Object.keys(context), scr)(...Object.values(context));
https://stackoverflow.com/questions/51698396
复制相似问题