我正在尝试编写一个需要知道传入对象的属性名称的函数,如下所示:
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
}
答案 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);
}