JavaScript では、オブジェクト o がプロパティ x を所有しているかどうかを確認するために 4 つのメソッドを使用できます。
1. o の「x」。 in 演算子を使用すると、オブジェクト o にプロパティ x が存在するかどうかを確認できます。 x は、オブジェクト自体 (独自のプロパティ) であることも、プロトタイプ オブジェクトから継承されることもあり、列挙可能なプロパティまたは列挙不可能なプロパティの場合もあります。
2.o.x。 x が存在するかどうかは、o.x ステートメントにアクセスし、その結果が in 演算子と同じスコープであるかどうかを判断することで確認できます。 in 演算子との違いは、プロパティ x の値がオブジェクト o 内で明示的に未定義であると宣言されている場合、o の "x" 演算の結果は true になり、o.x の結果は未定義になることです。
3.hasOwnProperty()。 o.hasOwnProperty("x") 操作は、o オブジェクト自体が x プロパティを持つかどうかを判断するために使用されます。プロトタイプ オブジェクトから継承されたプロパティ o は考慮されません。 hasOwnProperty() オペレーションは、列挙可能なプロパティと列挙不可能なプロパティの両方をチェックします。
4.propertyIsEnumerable()。 o.propertyIsEnumerable("x") オペレーションは、hasOwnProperty() のサブセットである o オブジェクト自体が所有する列挙可能なプロパティのみをチェックします。
上記の情報に基づく要約は次のとおりです: