Object.hasOwn() は、指定されたオブジェクトが指定されたプロパティを独自のプロパティとして持っているかどうかを判定するメソッドです。このメソッドは、プロパティがオブジェクトのプロトタイプチェーンではなく、そのオブジェクト自身に直接定義されている場合に true を返します[1]

構文

編集
Object.hasOwn(obj, prop)
  • obj: プロパティの存在を確認する対象のオブジェクト。
  • prop: 確認するプロパティの名前(文字列またはシンボル)。

独自プロパティを確認するプログラム

編集

以下のプログラムは、Object.hasOwn() を使用してオブジェクトが特定のプロパティを独自のプロパティとして持っているかどうかを確認します。

const obj = {
  a: 1,
  b: 2
};

console.log(Object.hasOwn(obj, 'a')); // true
console.log(Object.hasOwn(obj, 'b')); // true
console.log(Object.hasOwn(obj, 'c')); // false

このプログラムでは、Object.hasOwn() を使用して obj オブジェクトが ab プロパティを独自のプロパティとして持っているかどうかを確認しています。c プロパティは存在しないため、false が返されます。

継承されたプロパティを確認するプログラム

編集

以下のプログラムは、Object.hasOwn() を使用して継承されたプロパティが独自のプロパティではないことを確認します。

const parent = {
  a: 1
};

const child = Object.create(parent);
child.b = 2;

console.log(Object.hasOwn(child, 'a')); // false
console.log(Object.hasOwn(child, 'b')); // true

このプログラムでは、Object.hasOwn() を使用して child オブジェクトが ab プロパティを独自のプロパティとして持っているかどうかを確認しています。a プロパティは parent オブジェクトから継承されているため、false が返されます。b プロパティは child オブジェクトに直接定義されているため、true が返されます。

注意点

編集
  • 独自プロパティ: Object.hasOwn() は、指定されたプロパティがオブジェクトの独自プロパティであるかどうかのみを確認します。プロトタイプチェーン上のプロパティは無視されます。
  • シンボルプロパティ: シンボルプロパティも確認できます。
  • 非オブジェクト: 非オブジェクト(例: nullundefined)を指定すると、TypeError が発生します。

脚註

編集
  1. ^ これは、プロパティがオブジェクトの独自プロパティであるかどうかを判定するために使用されます。

外部リンク

編集