DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> js中for in語句的用法講解
js中for in語句的用法講解
編輯:關於JavaScript     

復制代碼 代碼如下:
 for(variable in object)
   statement

variable 是聲明一個變量的var語句,數組的一個元素或者是對象的一個屬性
在循環體內部,對象的一個屬性名會被作為字符串賦給變量variable。

注意:對象的有些屬性以相同的方式標記成了只讀的,永久的(不可刪除的)或者不可列舉的,這些屬性使用for/in循環不能枚舉出來。雖然所有的用戶定義的屬性都可以枚舉,但是許多內部屬性,包括所有的內部方法都是不可枚舉的。另外對象可以繼承其他對象的屬性,那些已繼承的用戶定義的屬性可以使用for/in 循環枚舉出來。

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屬性來判斷,說明如下:

object.propertyIsEnumerable(propname)是否可以通過for/in循環看到屬性
propname 一個字符串,包含object屬性的名稱
如果object具有名為propname的非繼承屬性,而且該屬性是可枚舉的(即用for/in循環可以枚舉它),則返回true

描述:

用for/in語句可以遍歷一個對象"可枚舉"的屬性,但並非一個對象的所有屬性都是可枚舉的,通過JavaScript代碼添加到對象的屬性是可枚舉的,而內部對象的預定義屬性(如方法)通常是不可枚舉的.

propertyIsEnumerable()方法不檢測原型鏈,這意味它只適用於對象的局部屬性,不能檢測繼承屬性的可枚舉性
復制代碼 代碼如下:
var o=new Object();
o.x=3.14;
o.propertyIsEnumerable("x");//true
o.propertyIsEnumerable("y");//false have not the property
o.propertyIsEnumerable("toString");//false inherited
Object.prototype.propertyIsEnumerable("toString");//false nonenumerable

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved