Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2022年3月.
Object.hasOwn() は静的メソッドで、指定されたオブジェクトが、指定されたプロパティを自身のプロパティとして持っている場合に true を返します。そのプロパティが継承されている場合、または存在しない場合、このメソッドは false を返します。
メモ: Object.hasOwn() 静的メソッドは Object.hasOwnProperty() インスタンスメソッドを置き換えるものとして意図されています。
テストする JavaScript オブジェクトのインスタンス。
propテストするプロパティの名前の文字列またはシンボル。
指定されたオブジェクトが指定されたプロパティを直接定義している場合、true を返します。それ以外の場合は false を返します。
Object.hasOwn() メソッドは、指定されたプロパティがオブジェクトの直接のプロパティである場合、そのプロパティ値が null または undefined であっても、true を返します。プロパティが継承されているか、またはまったく宣言されていない場合、このメソッドは false を返します。in 演算子とは異なり、このメソッドは、オブジェクトのプロトタイプチェーンで指定されたプロパティをチェックしません。
Object.prototype.hasOwnProperty() よりも推奨される理由は、 null プロトタイプオブジェクトや、継承した hasOwnProperty() メソッドをオーバーライドしたオブジェクトに対して動作することです。これらの問題を回避するには、別のオブジェクトの Object.prototype.hasOwnProperty() にアクセスする方法がありますが(Object.prototype.hasOwnProperty.call(obj, prop) のように)、Object.hasOwn() の方が直感的で簡潔です。
次のコードは、example オブジェクトに prop という名前のプロパティが含まれているかどうかを判断する方法を示しています。
以下の例では、直接のプロパティとプロトタイプチェーンを通じて継承されたプロパティを区別します。
オブジェクトの列挙可能なプロパティを反復処理するには、以下のようにします。
もし for...in を使う必要がある場合には、Object.hasOwn() を使うことで継承されたプロパティをスキップすることができます。
Array の要素は直接のプロパティとして定義されているので、hasOwn() メソッドで特定のインデックスが存在するかどうかを調べることができます。
この節では、Object.hasOwn() が hasOwnProperty() に影響を与える問題を回避していることを示します。最初の、hasOwnProperty() を再実装したオブジェクトでも使用できます。下記の実例では、再実装された hasOwnProperty() メソッドはすべてのプロパティに対して false を返しますが、Object.hasOwn() の動作は影響を受けません。
また、 null プロトタイプオブジェクトでも使用することができます。これらは Object.prototype を継承していないため、hasOwnProperty() はアクセスできません。
| ECMAScript® 2027 Language Specification # sec-object.hasown |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年8月23日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.