注意:物件的某些屬性以相同的方式標記成了唯讀的,永久的(不可刪除的)或不可列舉的,這些屬性使用for/in循環不能枚舉出來。雖然所有的使用者定義的屬性都可以枚舉,但是許多內部屬性,包括所有的內部方法都是不可列舉的。另外物件可以繼承其他物件的屬性,那些已繼承的使用者定義的屬性可以使用for/in 迴圈枚舉出來。
for(var i=0;i 例如:
var a = ["a","b","c"];
for(var el in a){
alert(a[el]);
}
這個就是窮舉出a中的所有元素,當然上面這個例子是可以用
for(var i=0,len=a.length;i
}
這種方式進行循環列出的,不過有時候這種方式就不一定奏效了。
例如:
var a = {"first":1,"second":2,"third":3};
這時候就只能用for in來窮舉了。
一個物件是否可以進行for in窮舉,我們可以透過propertyIsEnumerable屬性來判斷,說明如下:
object.propertyIsEnumerable(propname)是否可以透過for/in循環看到屬性
propname 一個字串,包含object屬性的名稱
如果object具有名為propname的非繼承屬性,且該屬性是可列舉的(即用for/in循環可以列舉它),則傳回true
描述:
用for/in語句可以遍歷一個物件"可枚舉"的屬性,但並非一個物件的所有屬性都是可枚舉的,透過JavaScript程式碼新增至物件的屬性是可列舉的,而內部物件的預定義屬性(如方法)通常是不可列舉的.
propertyIsEnumerable()方法不偵測原型鏈,這意味著它只適用於物件的局部屬性,不能偵測繼承屬性的可枚舉性