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