JavaScript按名称获取当前作用域中的变量

JavaScript按名称获取当前作用域中的变量,javascript,Javascript,我有一个变量和一个变量名字符串 function Factory(string) { var foo = 'bar' console.log("foo is equal to " + this[string]) } 如果变量所在的对象是当前对象,如何从字符串文本中获取变量 我原以为代码会起作用,但发生了以下情况: var f = new Factory('foo') //=> "foo is equal to undefined" 如何从字符串文本中获取变量?this[stri

我有一个变量和一个变量名字符串

function Factory(string) {
  var foo = 'bar'
  console.log("foo is equal to " + this[string])
}
如果变量所在的对象是当前对象,如何从字符串文本中获取变量

我原以为代码会起作用,但发生了以下情况:

var f = new Factory('foo') //=> "foo is equal to undefined"

如何从字符串文本中获取变量?

this[string]
假设您有一个变量
this.foo
,而您没有


如果需要,您可以执行一些
eval
操作,这将在您的情况下起作用:

function Factory(string) {
  var foo = 'bar'
  console.log("foo is equal to " + eval('(function(){return ' + string + '})()'))
}

虽然您可以使用
eval
,但我认为正确的方法是使用对象:

函数工厂(字符串){
var变量={foo:'bar'};
log(字符串+”等于“+变量[字符串])
}

我知道我不知道,但我仍在尝试获取变量。哦,我没想到!你也可以只做
eval('foo')
?@JacksonGariety:看起来像是一个XY问题,你通常不会在JS中这样做。。。你到底想做什么?更重要的是什么?@JacksonGariety
eval
只会运行一些代码
eval('foo')
不会做任何事情。我同意@elclans的说法,这很奇怪。