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

问题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")//问题2

var array=[1,2,3,4,5]//问题3

for( attr in oInput){

    console.log(

        attr+"="+oInput[attr]

    )

}

for( attr in array){

    console.log(

        attr+"="+oInput[attr]

    )

}

</script>


繁星coding
浏览 637回答 1
1回答

智慧大石

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__: Objectfor(let x in ob){console.log(ob[x])}a{c: "c", d: "d"}ƒ (){ return 0 }这个ob对象里有三个成员a, b, f for in 将其全部枚举出来了,所以只要记住这一点,for in枚举可枚举属性,所有问题都可以解决。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript