Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Object::Object.hasOwn静的メソッドの使い方

Object.hasOwn()静的メソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Object.hasOwn()メソッドは、指定されたオブジェクトが、特定の名前のプロパティを自身の直接のプロパティとして持っているかどうかを確認するメソッドです。このメソッドは、オブジェクトが直接的に持つプロパティのみを評価し、プロトタイプチェーンを遡って継承されたプロパティは対象としません。

このメソッドは2つの引数を取ります。最初の引数にはプロパティの有無を確認したいオブジェクトを指定し、2番目の引数には確認したいプロパティのキー(名前を指す文字列またはシンボル)を指定します。戻り値はブール値で、指定されたプロパティがオブジェクトの直接のプロパティとして存在する場合はtrueを、存在しない場合はfalseを返します。

従来のJavaScriptでは、同様の目的でObject.prototype.hasOwnProperty.call(obj, prop)が広く利用されていました。しかし、Object.hasOwn()は、そのより簡潔で安全な代替手段として導入されました。特に、オブジェクト自身がhasOwnPropertyという名前のプロパティを持っている場合や、Object.create(null)によって作成されたプロトタイプを持たないオブジェクトに対して、より安全かつ確実にプロパティの有無を確認できます。

JavaScriptのin演算子もプロパティの有無を確認できますが、in演算子はプロトタイプチェーン上の継承されたプロパティも考慮します。対してObject.hasOwn()は、オブジェクトが「自分自身で」持っているプロパティのみを厳密に検査したい場合に非常に有用です。これにより、意図しない継承されたプロパティによるバグを防ぎ、コードの堅牢性を高めることができます。オブジェクトのプロパティの存在を正確に判断するための、推奨されるモダンな方法です。

公式リファレンス: Object.hasOwn()

構文(syntax)

1const myObject = {
2  key1: 'value1',
3  key2: 'value2'
4};
5
6const ownsKey1 = Object.hasOwn(myObject, 'key1');
7const ownsKey3 = Object.hasOwn(myObject, 'key3');

引数(parameters)

obj, prop

  • obj: object: プロパティの存在を確認したいオブジェクト
  • prop: PropertyKey: 確認したいプロパティのキー(文字列またはシンボル)

戻り値(return)

boolean

指定されたオブジェクトが自身のプロパティ(直接定義されたプロパティ)を持っているかどうかを判定し、真偽値(trueまたはfalse)を返します。

関連コンテンツ

関連プログラミング言語