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

How to get variable keyword instead of variable value

本文关键字:变量值 关键字 何获得 变量      更新时间:2023-09-26

我创建了一个函数来打印对象或数组,这打印属性名称和值ok,但我不知道如何在输出的第一行打印"testobject"而不是"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
)

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

printO('someVar', someVar);

不用说,这是非常丑陋的,所以最好不要这样做。


因为另一个答案建议只传递名称并使用eval访问值:这将适用于全局对象-但在这种情况下,更好的方法是不使用eval,而是对全局对象(windowthis)使用[]操作符。由于不可能从局部作用域访问值,因此没有好方法使函数只接受变量名。

不幸的是,这在Javascript中是不可能的。最好的方法是将变量名作为字符串传入,然后使用eval()访问实际的变量:

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

参见这个问题:如何将变量名称转换为字符串在JavaScript?

编辑:事实上,上述解决方案是行不通的;