遍历对象属性

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循环更好(并且更易读)。

它支持这些浏览器:

  • Firefox(Gecko):4(2.0)
  • Chrome:5
  • Internet Explorer:9
  • 查看Mozilla Developer Network Object.keys()的参考资料以获取更多信息。


    这是for...in statement (MDN,ECMAScript规范)。

    你可以把它读作“ 每个属性obj对象,依次将各属性分配给PROPT变量”。

    链接地址: http://www.djcxy.com/p/2967.html

    上一篇: Iterate through object properties

    下一篇: How to directly initialize a HashMap (in a literal way)?