JavaScript/for...in
表示
for...in
[編集]for...in は、JavaScript においてオブジェクトの列挙可能なプロパティを反復処理するための制御文です。この構文を使用すると、オブジェクトのすべての列挙可能なプロパティのキーを順に取得することができます。
構文
[編集]for(variableinobject){// 実行するコード}
各部分の説明:
for...in
はプロトタイプチェーン上のすべての列挙可能なプロパティを含むため、注意が必要です。
使用例
[編集]オブジェクトのプロパティを列挙
[編集]// オブジェクトの列挙例constperson={name:'Alice',age:30,city:'Tokyo'};for(letkeyinperson){console.log(`${key}: ${person[key]}`);}
この例では、person
オブジェクトのすべてのプロパティ名が key
に代入され、その値を取り出しています。
プロトタイプチェーンの影響
[編集]// プロトタイプチェーン上のプロパティも列挙される例constobj=Object.create({inheritedProp:'value'});obj.ownProp='ownValue';for(letkeyinobj){console.log(key);// "inheritedProp" と "ownProp" が出力される}
この例では、Object.create
を使用して生成されたオブジェクトのプロトタイプ上のプロパティも列挙されることを示しています。
hasOwnProperty
の使用
[編集]// オブジェクト自身のプロパティのみを列挙for(letkeyinobj){if(obj.hasOwnProperty(key)){console.log(key);// "ownProp" のみ出力される}}
この例では、hasOwnProperty
メソッドを使用して、オブジェクト自身のプロパティのみを列挙しています。
注意点
[編集]- 配列には非推奨: 配列の反復には
for...in
を使用しないでください。配列のインデックスを列挙する目的では、for...of
や通常のfor
文を使用することが推奨されます。 - プロトタイプチェーンの影響:
for...in
はプロトタイプチェーン上のプロパティも列挙するため、必要に応じてhasOwnProperty
を使用してください。 - プロパティの順序:
for...in
はプロパティを特定の順序で反復処理することを保証しません。