Javascript:将字符串解释为对象引用?

chr*_*mac 25 javascript

可能重复:
Javascript使用变量作为对象名称

如何让JS将字符串视为对先前定义的对象的引用?简化:

var myObject = new MyObject();

var myString = "myObject";

var wantThisToWork = myString.myproperty;
Run Code Online (Sandbox Code Playgroud)

Jua*_*des 31

如果变量位于全局范围内,则可以将其作为全局对象的属性进行访问

var a = "hello world";
var varName = "a";
console.log( window[varName] ); // outputs hello world
console.log( this[varName] ); // also works (this === window) in this case
Run Code Online (Sandbox Code Playgroud)

但是,如果它是局部变量,唯一的方法是使用eval(免责声明)

function () {
  var a = "hello world";
  var varName = "a";
  console.log( this[varName] ); // won't work
  console.log( eval(varName) ); // Does work
}
Run Code Online (Sandbox Code Playgroud)

除非您可以将动态变量放入对象并像属性一样访问它

function () {
  var scope = {
    a: "hello world";
  };
  var varName = "a";
  console.log( scope[varName] ); // works
}
Run Code Online (Sandbox Code Playgroud)


Par*_*kar 7

在我看来,唯一的方法是使用eval.但正如他们所说,eval是邪恶的 - 但不是在受控制的环境中.这是可能的方式,但我不建议使用eval,除非绝对必要.

var myObject = new MyObject();
var myString = "myObject";
var wantThisToWork = eval(myString).myproperty;
Run Code Online (Sandbox Code Playgroud)


sac*_*een 7

你可以使用这个eval功能.

eval(myString).myproperty
Run Code Online (Sandbox Code Playgroud)

但是,仔细阅读eval,如果这是用户输入的内容,它将执行任何javascript代码!