for(var i=0;i<len;i++)這樣的用法一般都可以用for in 來取代。
例如:
複製代碼代碼如下:
var a = ["a","b","c"];
for(var el in a){
alert(a[el]);
}
這個就是窮舉出a的所有元素,當然上面這個例子是可以用
複製代碼代碼如下:
for(var i=0,len=a.length;i<len;i++){
alert(a[i]);
}
這種方式進行循環列出的,不過有時候這種方式就不一定奏效了。
例如:
複製代碼代碼如下:
var a = {"first":1,"second":2,"third":3};
這時候就只能用for in來窮舉了。
一個物件是否可以進行for in窮舉,我們可以透過propertyIsEnumerable屬性來判斷,說明如下:
propertyIsEnumerable 屬性
傳回Boolean 值,指出所指定的屬性是否為一個物件的一部分以及該屬性是否是可列舉的。
複製代碼代碼如下:
object.propertyIsEnumerable(proName)
參數
object
必選項。一個對象。
proName
必選項。一個屬性名稱的字串值。
說明
如果proName 存在於object 中且可以使用一個For…In 迴圈窮舉出來,那麼propertyIsEnumerable 屬性傳回true。如果object 不具有所指定的屬性或指定的屬性不是可列舉的,那麼propertyIsEnumerable 屬性會傳回false。典型地,預先定義的屬性不是可列舉的,而使用者定義的屬性總是可列舉的。
propertyIsEnumerable 屬性不考慮原型鏈中的物件。