someFunction(link) {
someOtherFunction('div' + link);
}
通过调用someFunction(“Test”),字符串“divTest”将传递给someOtherFunction()。但我希望传递变量“divTest”的值。
怎么办呢?
答案 0 :(得分:10)
使变量成为对象的成员。然后,您可以使用[]
使用字符串访问对象成员:
var byname = {
divabc: ...,
divxyz: ...
};
function someFunction(link) {
someOtherFunction(byname['div'+link]);
}
someFunction('abc'); // calls someOtherFunction(byname.divabc)
答案 1 :(得分:8)
对于这种动态构造/访问变量名,您应该使用替代对象表示法:
object.member === object["member"]
这样,您可以将变量名构造为字符串,并在方括号内使用它来访问对象成员。
答案 2 :(得分:3)
eval
会执行此操作,但是当您想要合成这样的标识符时,它通常会指示程序的其他一些问题。正如Ionut所说,最好使用[]
符号。我想在出现类似问题的时候链接到this。
答案 3 :(得分:2)
您应该可以使用“eval”功能完成此操作。
答案 4 :(得分:1)
试试这个:
var divFoo = "bar";
function someFunction(link) {
someOtherFunction(this['div' + link]);
}
function someOtherFunction(value) {
alert(value);
}
someFunction("Foo");
答案 5 :(得分:-1)
正如wybiral所说,你需要的只是eval:
someFunction(link) {
someOtherFunction(eval('(div' + link + ')');
}
基本上它所做的是将字符串的内容作为代码进行评估。显然,eval是一个危险的小工具,因为它允许执行任意代码,因此在使用它时要小心。