在JavaScript中获取对象的名称作为字符串

问题描述:

可能重复:
How do I enumerate the properties of a javascript object?
Javascript: Getting a Single Property Name在JavaScript中获取对象的名称作为字符串

给定一个JavaScript对象或JSON对象,如:

{ 
    property: "value" 
} 

怎么能得到这个词property作为一个字符串?

+5

http://stackoverflow.com/questions/85992/how-do-i-enumerate-the-properties-of-a-javascript-object – gr5

for(var i in obj) alert(i);//the key name 

一个残酷的方法是在对象上使用.toString,然后提取名称。但我敢肯定会有更好的办法:)

var obj = { 
    property: "value" 
}; 

for (var key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     alert("key = " + key + ", value = " + obj[key]); 
    } 
} 

使用Object.keys()[docs]

var key = Object.keys(my_obj)[ 0 ]; // "property" 

它返回该特定对象(不是其原型链)中的可枚举键的数组。


要支持旧版浏览器,请包括MDN文档中提供的兼容性填充。

if (!Object.keys) { 
    Object.keys = function (o) { 
     if (o !== Object(o)) throw new TypeError('Object.keys called on non-object'); 
     var ret = [], 
      p; 
     for (p in o) if (Object.prototype.hasOwnProperty.call(o, p)) ret.push(p); 
     return ret; 
    } 
}