遍历对象属性
var obj = {
name: "Simon",
age: "20",
clothing: {
style: "simple",
hipster: false
}
}
for(var propt in obj){
alert(propt + ': ' + obj[propt]);
}
变量propt
如何表示对象的属性? 它不是内置方法或属性。 那么为什么它会提供对象中的每个属性?
迭代属性需要额外的hasOwnProperty
检查:
for (var property in object) {
if (object.hasOwnProperty(property)) {
// do stuff
}
}
这是必要的,因为对象的原型包含对象的附加属性,这些属性在技术上属于对象的一部分。 这些附加属性是从基础对象类继承的,但仍然是object
属性。
hasOwnProperty
只是检查这是否是该类的特定属性,而不是从基类继承的属性。
从JavaScript 1.8.5开始,您可以使用Object.keys(obj)
获取在对象本身上定义的一组属性(对obj.hasOwnProperty(key)
返回true)。
Object.keys(obj).forEach(function(key,index) {
// key: the name of the object key
// index: the ordinal position of the key within the object
});
这比使用for-in循环更好(并且更易读)。
它支持这些浏览器:
查看Mozilla Developer Network Object.keys()的参考资料以获取更多信息。
这是for...in statement
(MDN,ECMAScript规范)。
你可以把它读作“ 在每个属性obj
对象,依次将各属性分配给PROPT变量”。
上一篇: Iterate through object properties
下一篇: How to directly initialize a HashMap (in a literal way)?