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

关于object 使用for in遍历的说法是否正确?

关于object 使用for in遍历的说法是否正确?

繁星coding 2018-12-27 22:14:57
问题1:只要是object一个对象就可以使用for in去输出属性查看?问题2:我只知道json是用for in去遍历,json因为有键名和键值,所以遍历之后可以看到具体的键名的具体内容。那么是否说明所有的object都是属于json的模式的?问题3:其实数组也是属于object的,明显不属于json那样,但也居然可以使用for in遍历!(怀疑人生...)下面是我测试的代码:<input type="text" id="input_01"><script>var oInput=document.getElementById("input_01")//问题2var array=[1,2,3,4,5]//问题3for( attr in oInput){    console.log(        attr+"="+oInput[attr]    )}for( attr in array){    console.log(        attr+"="+oInput[attr]    )}</script>
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

for in 可以枚举可枚举属性名,对象,数组都是可以使用的,可以把数组理解为一种特殊的对象,常用for in枚举稀疏数组,object如果说里面包含object,那么for in 就无法枚举里面的object,类似于浅拷贝。object是有一些自己的方法的,比如toString之类的,但是因为这些方法不可枚举,使用for in时不会显示,但是如果object上有个方法,这个方法是你自己加上去的,默认可枚举,for in就会枚举它,这可能就不是你想要的结果.

ob{


a: "a",

b: {…},

f: ƒ

}

a: "a"

b: {c: "c", d: "d"}

f: ƒ ()__proto__: Object

for(let x in ob){


console.log(ob[x])

}

a


{c: "c", d: "d"}


ƒ (){ return 0 }

这个ob对象里有三个成员a, b, f for in 将其全部枚举出来了,所以只要记住这一点,for in枚举可枚举属性,所有问题都可以解决。


查看完整回答
反对 回复 2019-01-17
  • 1 回答
  • 0 关注
  • 636 浏览
慕课专栏
更多

添加回答

举报

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