JavaScript で値がオブジェクトかどうかを確認する
-
JavaScript で
instanceof
関数を使用して値がオブジェクトであるかどうかを確認する -
JavaScript で
typeof()
関数を使用して値がオブジェクトであるかどうかを確認する - JavaScript でユーザー定義関数を使用して値がオブジェクトであるかどうかを確認する
-
JavaScript で
getPrototypeOf()
メソッドを使用して値がオブジェクトであるかどうかを確認する
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