首頁  >  文章  >  web前端  >  js中for in語句的用法講解_javascript技巧

js中for in語句的用法講解_javascript技巧

WBOY
WBOY原創
2016-05-16 16:02:351483瀏覽

複製程式碼 程式碼如下:

 for(variable in object)
   statement

variable 是宣告一個變數的var語句,陣列的一個元素或是物件的屬性
在循環體內部,物件的一個屬性名稱會被當作字串賦給變數variable。

注意:物件的某些屬性以相同的方式標記成了唯讀的,永久的(不可刪除的)或不可列舉的,這些屬性使用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 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
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn