指定されたコード スニペットでは、for-in ループがオブジェクト obj のプロパティを反復処理します。各プロパティの名前は変数 propt に割り当てられ、その値は obj[propt] としてアクセスされます。
ただし、注意すべき重要な点は、propt はオブジェクトの組み込みメソッドまたはプロパティではないということです。代わりに、これはループの反復中に各プロパティの名前を取る単なる変数です。
for-in ループを使用してオブジェクト プロパティを反復するには、追加の安全性が必要ですcheck: Object.prototype.hasOwnProperty.call(obj, prop).
このチェックはJavaScript のオブジェクトは基本クラスのプロトタイプからプロパティを継承するため、これが必要です。したがって、オブジェクトは、明示的に定義されていないが、基本クラスから継承されたプロパティを所有する場合があります。
ループ内に継承されたプロパティが含まれることを避けるために、hasOwnProperty チェックは、特定のプロパティが明確にクラスに属しているかどうかを判断します。継承されたプロトタイプではなくオブジェクトが反復処理されます。
を使用する代わりにObject.prototype.hasOwnProperty.call(obj, prop) のように、オブジェクト自体で hasOwnProperty を直接呼び出すこともできます:
if (obj.hasOwnProperty(prop)) { // Do stuff }
ただし、オブジェクト自体に という名前のプロパティがある場合、このアプローチではエラーが発生する可能性があります。独自のプロパティを持っています。これを防ぐには、Object.prototype.hasOwnProperty 構文を使用することをお勧めします。
以上がJavaScript でオブジェクトのプロパティを安全に反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。