问题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>
for in 可以枚举可枚举属性名,对象,数组都是可以使用的,可以把数组理解为一种特殊的对象,常用for in枚举稀疏数组,object如果说里面包含object,那么for in 就无法枚举里面的object,类似于浅拷贝。object是有一些自己的方法的,比如toString之类的,但是因为这些方法不可枚举,使用for in时不会显示,但是如果object上有个方法,这个方法是你自己加上去的,默认可枚举,for in就会枚举它,这可能就不是你想要的结果.
ob{
for(let x in ob){
}
a
{c: "c", d: "d"}
ƒ (){ return 0 }
这个ob对象里有三个成员a, b, f for in 将其全部枚举出来了,所以只要记住这一点,for in枚举可枚举属性,所有问题都可以解决。