迭代对象属性var obj = { name: "Simon", age: "20", clothing: { style: "simple", hipster: false }}for(var propt in obj){ console.log(propt + ': ' + obj[propt]);}变量如何propt表示对象的属性?它不是内置方法或属性。为什么它会出现在对象中的每个属性?
4 回答
万千封印
TA贡献1891条经验 获得超3个赞
迭代属性需要这个额外的hasOwnProperty
检查:
for (var property in object) { if (object.hasOwnProperty(property)) { // do stuff }}
这是必要的,因为对象的原型包含对象的附加属性,这些属性在技术上是对象的一部分。这些附加属性继承自基础对象类,但仍然是属性object
。
hasOwnProperty
只需检查这是否是特定于此类的属性,而不是从基类继承的属性。
守着星空守着你
TA贡献1799条经验 获得超8个赞
从JavaScript 1.8.5开始,您可以使用Object.keys(obj)
获取在对象本身上定义的属性数组(返回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循环更好(也更可读)。
它支持这些浏览器:
Firefox(Gecko):4(2.0)
Chrome:5
Internet Explorer:9
有关更多信息,请参阅Mozilla Developer Network Object.keys()的参考。
眼眸繁星
TA贡献1873条经验 获得超9个赞
添加回答
举报
0/150
提交
取消