在运行时构造javascript变量名

时间:2009-02-22 23:21:48

标签: javascript

someFunction(link) {
  someOtherFunction('div' + link);
}

通过调用someFunction(“Test”),字符串“divTest”将传递给someOtherFunction()。但我希望传递变量“divTest”的值。

怎么办呢?

6 个答案:

答案 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是一个危险的小工具,因为它允许执行任意代码,因此在使用它时要小心。