让我说我有这个功能
var foo = function ()
{
var bar = true;
var inner = function ()
{
alert(bar);
}();
}
当我运行时,一切都很好,警报说“真实”。但是如果变量名是动态的并且我必须从字符串中获取bar的值呢?如何访问父作用域以获取变量?
示例:如果范围是窗口并且我们有包含动态变量名称的字符串,我会使用window [someString]来获取该变量。
我猜我在问题上也需要同样的方法,但我不知道用什么对象作为父对象。
答案 0 :(得分:-1)
没有父对象,因为变量不是任何对象的属性。
您可以使用eval
函数从包含名称的字符串中获取变量的值。例如:
var foo = function ()
{
var bar = true;
var inner = function ()
{
var name = "bar";
alert(eval(name));
}();
}
提醒:
eval
函数很慢,因为它必须每次都将字符串解析为代码。eval
函数危险,因为它将执行字符串包含的任何内容。如果字符串可以包含不同用户可以控制的任何内容,则可能会打开您的站点以进行跨站点脚本编写。