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 的obj.hasOwnProperty(key)
)。
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变量”。