如何获取变量关键字而不是变量值

时间:2011-11-13 01:19:29

标签: javascript variables printing

我创建了一个打印对象或数组的函数,这打印属性名称和值ok,但我无法弄清楚如何在第一行打印“testobject”intead“object”的输出。

部分功能

function expandNode(obj) {
    for (var node in obj) {
        text += node + " => " + obj[node] + "<br>";  //keyword => value
    }
    return (text);
}

为例

var testobject={};
testobject["car"]="toyota";
testobject["instrument"]="piano";
testobject["computer"]="macintosh";
document.write( printO(testobject) );

输出

object
(
    car => toyota
    instrument => piano
    computer => macintosh
)

2 个答案:

答案 0 :(得分:1)

这是不可能的。你唯一能做的就是传递变量名:

printO('someVar', someVar);

无需说这非常难看,所以最好不要这样做。


由于另一个答案建议只传递名称并使用eval来访问该值: 这适用于全局变量 - 但在这种情况下,更好的方法是不使用eval,而是使用全局对象[]window上的this运算符。因为不可能从本地范围访问值,但是没有好办法让你的函数只接受变量名。

答案 1 :(得分:0)

不幸的是,这在Javascript中是不可能的。您可以做的最好的事情是将变量名称作为字符串传递,然后使用eval()来访问实际变量:

function printO(obj_str) {
  alert("The variable name is " + obj_str);
   obj = eval(obj_str);
}

另见这个问题: How to convert variable name to string in JavaScript?

编辑:事实上,上述解决方案不起作用;见下面的讨论。