可能是重复问题:
JavaScript如何使用变量作为对象名称
如何让JS将字符串视为对先前定义的对象的引用?简化版:
var myObject = new MyObject();
var myString = "myObject";
var wantThisToWork = myString.myproperty;
可能是重复问题:
JavaScript如何使用变量作为对象名称
如何让JS将字符串视为对先前定义的对象的引用?简化版:
var myObject = new MyObject();
var myString = "myObject";
var wantThisToWork = myString.myproperty;
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
然而,如果它是一个局部变量,唯一的方法就是使用eval
(免责声明)。
function () {
var a = "hello world";
var varName = "a";
console.log( this[varName] ); // won't work
console.log( eval(varName) ); // Does work
}
function () {
var scope = {
a: "hello world";
};
var varName = "a";
console.log( scope[varName] ); // works
}
eval
一样。如果可能的话,最好避免使用它。 - Ruan MendesonclickB
的形式为 return someFunc(2,'abc')
时,Function(onclickB.replace("p,q", "p,q,r"))
运行良好。但是,当我仅提取函数名即 onclickB = 'someFunc'
时,将其传递给 Function(onclickB).call(....)
不会调用该函数并报错。我在这里做了什么愚蠢的事情吗? - techie_28eval
函数。eval(myString).myproperty
eval
。 - Ruan Mendes在我看来,唯一的方法是使用eval。但是众所周知,eval是邪恶的 - 除非在受控环境下。虽然这是可能的,但我不建议使用eval,除非绝对必要。
var myObject = new MyObject();
var myString = "myObject";
var wantThisToWork = eval(myString).myproperty;
eval
(如果你想要访问一个本地变量)。 - Ruan MendesUse eval()
var myObject = {};
myObject.myproperty = "Hello";
var myString = "myObject";
var wantThisToWork = eval(myString).myproperty;
myObject
存储在另一个用作全局命名空间的对象中。var my_namespace = {}; my_namespace.myObject = new MyObject(); var myString = "myObject"; var itWorks = my_namespace[myString].myproperty
- user1106925