Javascript:检索对象属性名称

时间:2010-04-26 23:47:06

标签: javascript

我正在尝试编写一个需要知道传入对象的属性名称的函数,如下所示:

var data = { "key1":"value1", "key2":"value2", etc}
               ^ i want the string value "key1"

如何从data检索字符串“key1”?我知道我可以像data[prop]=value一样动态设置属性,但我想知道传入的对象是什么prop

如果这没有意义,我想我可以尝试解释更多。谢谢!

我最终想做的事情是:

for (var i = 0; i<data.length; i++)
{
    var name = data[i].getPropertyName() <--- not a real function
    // do stuff
}

3 个答案:

答案 0 :(得分:21)

答案 1 :(得分:5)

var data = { "key1":"value1", "key2":"value2"}; //etc

for (var prop in data) {
  var propName = prop;
  var propVal = data[prop];
  // do something with your new variables
}

是的,就这么简单。

答案 2 :(得分:1)

受到上述答案的启发,我想知道如何在继承链中列出任何对象的所有属性(包括可数字的和不可数的)。 这个功能似乎已经足够了。

var allPropNames = [];

function digAllPropsOut (ob){
    var propNames = Object.getOwnPropertyNames(ob);
    propNames.forEach(function(name) {
        allPropNames.push(name);
    });
    // allPropNames.push('\n');
    ob = Object.getPrototypeOf(ob);
    if (ob)
        digAllPropsOut(ob);
}