注意:對(duì)象的有些屬性以相同的方式標(biāo)記成了只讀的,永久的(不可刪除的)或者不可列舉的,這些屬性使用for/in循環(huán)不能枚舉出來。雖然所有的用戶定義的屬性都可以枚舉,但是許多內(nèi)部屬性,包括所有的內(nèi)部方法都是不可枚舉的。另外對(duì)象可以繼承其他對(duì)象的屬性,那些已繼承的用戶定義的屬性可以使用for/in 循環(huán)枚舉出來。
for(var i=0;i<len;i++)這樣的用法一般都可以用for in 來替代。
例如:
一個(gè)對(duì)象是否可以進(jìn)行for in窮舉,我們可以通過propertyIsEnumerable屬性來判斷,說明如下:
object.propertyIsEnumerable(propname)是否可以通過for/in循環(huán)看到屬性
propname 一個(gè)字符串,包含object屬性的名稱
如果object具有名為propname的非繼承屬性,而且該屬性是可枚舉的(即用for/in循環(huán)可以枚舉它),則返回true
描述:
用for/in語句可以遍歷一個(gè)對(duì)象"可枚舉"的屬性,但并非一個(gè)對(duì)象的所有屬性都是可枚舉的,通過JavaScript代碼添加到對(duì)象的屬性是可枚舉的,而內(nèi)部對(duì)象的預(yù)定義屬性(如方法)通常是不可枚舉的.
propertyIsEnumerable()方法不檢測原型鏈,這意味它只適用于對(duì)象的局部屬性,不能檢測繼承屬性的可枚舉性
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注