繁星coding
2018-12-27 22:14:57
問題1:只要是object一個對象就可以使用for in去輸出屬性查看?問題2:我只知道json是用for in去遍歷,json因為有鍵名和鍵值,所以遍歷之后可以看到具體的鍵名的具體內(nèi)容。那么是否說明所有的object都是屬于json的模式的?問題3:其實數(shù)組也是屬于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貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊
for in 可以枚舉可枚舉屬性名,對象,數(shù)組都是可以使用的,可以把數(shù)組理解為一種特殊的對象,常用for in枚舉稀疏數(shù)組,object如果說里面包含object,那么for in 就無法枚舉里面的object,類似于淺拷貝。object是有一些自己的方法的,比如toString之類的,但是因為這些方法不可枚舉,使用for in時不會顯示,但是如果object上有個方法,這個方法是你自己加上去的,默認(rèn)可枚舉,for in就會枚舉它,這可能就不是你想要的結(jié)果.
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枚舉可枚舉屬性,所有問題都可以解決。
添加回答
舉報
0/150
提交
取消