for(var i=0;i<len;i++) のような使用法は、通常、for in に置き換えることができます。
例えば:
次のようにコードをコピーします。
var a = ["a","b","c"];
for(var el in a){
アラート(a[el]);
}
これは a のすべての要素を列挙するためのものです。 もちろん、上記の例を使用することもできます。
次のようにコードをコピーします。
for(var i=0,len=a.length;i<len;i++){
アラート(a[i]);
}
この方法はループ内でリストするために使用されますが、場合によってはこの方法が機能しない場合があります。
例えば:
次のようにコードをコピーします。
var a = {「最初」:1、「2番目」:2、「3番目」:3};
現時点では、リストをすべて網羅するには for in のみを使用できます。
オブジェクトが網羅可能かどうかは、propertyIsEnumerable 属性によって判断できます。説明は次のとおりです。
propertyIsEnumerable プロパティ
指定されたプロパティがオブジェクトの一部であるかどうか、およびプロパティが列挙可能であるかどうかを示すブール値を返します。
次のようにコードをコピーします。
object.propertyIsEnumerable(proName)
パラメータ
物体
必須。オブジェクト。
プロ名
必須。プロパティ名の文字列値。
説明する
proName がオブジェクト内に存在し、For...In ループを使用して列挙できる場合、propertyIsEnumerable プロパティは true を返します。オブジェクトに指定されたプロパティがない場合、または指定されたプロパティが列挙可能でない場合、propertyIsEnumerable プロパティは false を返します。通常、事前定義されたプロパティは列挙可能ではありませんが、ユーザー定義のプロパティは常に列挙可能です。
propertyIsEnumerable プロパティは、プロトタイプ チェーン内のオブジェクトを考慮しません。