我创建了一个打印对象或数组的函数,这打印属性名称和值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
)
答案 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? 击>
编辑:事实上,上述解决方案不起作用;见下面的讨论。