ホームページ  >  記事  >  ウェブフロントエンド  >  js_javascriptスキルにおけるfor in文の使い方を解説

js_javascriptスキルにおけるfor in文の使い方を解説

WBOY
WBOYオリジナル
2016-05-16 16:02:351483ブラウズ

コードをコピーします コードは次のとおりです:

for(オブジェクト内の変数)
ステートメント

variable は、変数、配列の要素、またはオブジェクトの属性を宣言する var ステートメントです
ループ本体内で、オブジェクトのプロパティ名が文字列として変数に割り当てられます。

注: オブジェクトの一部のプロパティは、読み取り専用、永続 (削除不可)、または列挙不可能としてマークされています。これらのプロパティは、for/in ループを使用して列挙できません。すべてのユーザー定義プロパティは列挙可能ですが、すべての内部メソッドを含む多くの内部プロパティは列挙可能ではありません。さらに、オブジェクトは他のオブジェクトからプロパティを継承でき、継承されたユーザー定義プロパティは for/in ループを使用して列挙できます。

for(var i=0;i

例:

コードをコピー コードは次のとおりです:

var a = ["a","b","c"];
for(var el in a){
アラート(a[el]);
}

これは a のすべての要素を列挙するためのものです。 もちろん、上記の例も使用できます
コードをコピー コードは次のとおりです:

for(var i=0,len=a.length;i アラート(a[i]);
}

この方法はループ内でリストするために使用されますが、場合によってはこの方法が機能しない場合があります。
例:
コードをコピー コードは次のとおりです:

var a = {"最初":1,"2番目":2,"3番目":3};

現時点では、リストをすべて網羅するには for in のみを使用できます。

オブジェクトが網羅可能かどうかは、propertyIsEnumerable 属性で判断できます。説明は次のとおりです。

object.propertyIsEnumerable(propname) が for/in ループを通じてプロパティを参照できるかどうか

propname は、オブジェクト属性
の名前を含む文字列です。 オブジェクトに propname という名前の非継承プロパティがあり、そのプロパティが列挙可能である (つまり、for/in ループを使用して列挙できる) 場合、true
を返します。

説明:

for/in ステートメントを使用して、オブジェクトの「列挙可能な」プロパティを調べることができますが、JavaScript コードを通じてオブジェクトに追加されたプロパティのすべてが列挙可能であるわけではなく、オブジェクトの内部定義済みプロパティ (メソッドなど) は通常、列挙可能ではありません。

propertyIsEnumerable() メソッドはプロトタイプ チェーンをチェックしません。つまり、オブジェクトのローカル プロパティにのみ適用され、継承されたプロパティの列挙可能性を検出できません。


コードをコピー コードは次のとおりです:
var o=新しいオブジェクト();
o.x=3.14;
o.propertyIsEnumerable("x");//true
o.propertyIsEnumerable("y");//false プロパティ
がありません o.propertyIsEnumerable("toString");//false を継承
Object.prototype.propertyIsEnumerable("toString");//false nonenumerable

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。