JavaScript で値がオブジェクトかどうかを確認する

Hiten Kanwar 2023年10月12日
  1. JavaScript で instanceof 関数を使用して値がオブジェクトであるかどうかを確認する
  2. JavaScript で typeof() 関数を使用して値がオブジェクトであるかどうかを確認する
  3. JavaScript でユーザー定義関数を使用して値がオブジェクトであるかどうかを確認する
  4. JavaScript で getPrototypeOf() メソッドを使用して値がオブジェクトであるかどうかを確認する
JavaScript で値がオブジェクトかどうかを確認する

JavaScript では、定義されたすべての値はオブジェクトまたはプリミティブのいずれかです。オブジェクトではなく、メソッドを持たない値は、プリミティブと呼ばれます。原始的でないものはすべてオブジェクトであるかどうかです。

このチュートリアルでは、値がオブジェクトであるかどうかを確認します。

JavaScript で instanceof 関数を使用して値がオブジェクトであるかどうかを確認する

実行時にオブジェクトのタイプを返す instanceof メソッドを使用して値を確認します。

次の例では、値がオブジェクトタイプの場合、関数は true を返します。

const test = {};
function isObject(val) {
  return val instanceof Object;
}
console.log(isObject(test));

出力:

true

ただし、この方法はすべての場合に機能するとは限りません。isObject(Object.prototype) および isObject(Object.create(null)) は False を返します。

JavaScript で typeof() 関数を使用して値がオブジェクトであるかどうかを確認する

typeof() 関数を使用してオブジェクトのタイプを確認できます。

例えば、

const test = {};
function isObject(val) {
  return (typeof val === 'object');
}
console.log(isObject(test));

出力:

true

この方法は、すべてのテストケースで機能するとは限りません。null テストケースの場合は誤検知、関数の場合は誤検知を返します。isObject(Object) も False を返します。

この関数を使用して、上記の制限に対処する別の関数を定義することもできます。

以下のコードを参照してください。

const test = {};
function t() {};
function isObject(val) {
  if (val === null) {
    return false;
  }
  return ((typeof val === 'function') || (typeof val === 'object'));
}
console.log(isObject(test));
console.log(isObject(t));

出力:

true 
true

上記の例の関数は、値が NULL の場合に False を返します。値が function タイプまたは object タイプの場合、true を返します。それ以外の場合は、False を返します。

JavaScript でユーザー定義関数を使用して値がオブジェクトであるかどうかを確認する

オブジェクトのコンストラクターとクラスに基づいてジョブを実行するために、このような関数をさらに定義できます。

例えば、

const test = {};
function isObject(obj) {
  return obj === Object(obj);
}
function isObject2(obj) {
  return obj.constructor.toString().indexOf('Object') > -1;
}
console.log(isObject(test));
console.log(isObject2(test));

出力:

true
true

上記の例では、指定された値がオブジェクトであるかどうかを確認できる 2つの関数を作成しました。

JavaScript で getPrototypeOf() メソッドを使用して値がオブジェクトであるかどうかを確認する

getPrototypeOf メソッドは、引数がオブジェクトでない場合、例外をスローします。これを使用して、指定された値のクラスのタイプを確認できます。

例えば、

const test = {};
const object1 = Object.create(test);
console.log(Object.getPrototypeOf(object1) === test);

出力:

true

関連記事 - JavaScript Object