这篇文章为如何在特定的上下文/范围内使用eval提供了一种解决方案,而不必在评估代码中使用this
开头所有变量/函数。 javascript eval in context without using this keyword
为了澄清-假设我有以下对象作为eval语句{dog: "labrador"}
的上下文。我希望console.log(eval(dog))
输出“ labrador”而不必键入eval(this.dog)
但是,链接文章中的解决方案:
function evalInContext(scr, context)
{
// execute script in private context
return (new Function( "with(this) { return " + scr + "}")).call(context);
}
使用with
语句。考虑到不建议使用with
语句,是否有替代解决方案?
答案 0 :(得分:1)
有替代解决方案吗?
当然可以,但是那比with
更糟:
return new Function(...Object.keys(context), scr)(...Object.values(context));