为了账号安全,请及时绑定邮箱和手机立即绑定

迭代对象属性

迭代对象属性

迭代对象属性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 只需检查这是否是特定于此类的属性,而不是从基类继承的属性。


查看完整回答
反对 回复 2019-05-27
?
守着星空守着你

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()的参考


查看完整回答
反对 回复 2019-05-27
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

这是for...in statementMDNECMAScript规范)。

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


查看完整回答
反对 回复 2019-05-27
  • 4 回答
  • 0 关注
  • 757 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信