-1

假设我有这个功能

var foo = function ()
{
  var bar = true;
  var inner = function ()
  {
    alert(bar);
  }();
}

当我运行它时,一切都很好,警报说“真实”。但是如果变量名是动态的并且我必须从字符串中获取 bar 的值呢?如何访问父范围以获取变量?

例如:如果范围是 window 并且我们有包含动态变量名称的字符串,我将使用 window[someString] 来获取该变量。

我猜在我的问题中我也需要这种相同的方法,但我不知道将哪个对象用作父对象。

4

1 回答 1

-1

没有父对象,因为变量不是任何对象的属性。

您可以使用该eval函数从包含名称的字符串中获取变量的值。例子:

var foo = function ()
{
  var bar = true;
  var inner = function ()
  {
    var name = "bar";
    alert(eval(name));
  }();
}

警告:

  • eval函数很慢,因为它每次都必须将字符串解析为代码。
  • eval函数很危险,因为它将执行字符串包含的任何内容。如果字符串可以包含其他用户可以控制的任何内容,它可能会打开您的站点以进行跨站点脚本。
于 2013-07-21T23:48:31.927 回答