【发布时间】:2015-07-04 14:51:13
【问题描述】:
我有一些从服务器返回的代码,比如“var myVar = 314;”,我想创建一个上下文对象,比如 var context = {};然后评估脚本“var myVar = 314;”进入上下文的属性,我怎么能做到这一点?
我尝试了以下代码,但没有成功:
var context = {};
eval.call(context, "var myVar = 314;");
编辑 可能是我一开始不够清楚,我预期的结果是:在eval()之后,我得到了上下文对象中的属性,目的是避免全局范围的人口。
例如,
var context = {};
eval.call(context, "var myVar = 314;");
我希望结果为 context.myVar = 314。
【问题讨论】:
-
试试
context["myVar"] = 314;? -
变量不进入对象。不确定你实际上在问什么。你想得到什么结果?
-
即使你使用抽象来实现
this,你也是varing,所以不会在this对象上设置值,只是在你调用@的闭包中987654329@下。 -
我相信this extensible Scope class 与您正在寻找的内容很接近。它允许您添加私有变量并使用其 eval 方法来评估使用它们的代码。它还会跟踪您添加的 var 名称。
标签: javascript scope eval global