javascript オブジェクトであるかを判定する
- 作成日 2023.01.11
- javascript
- javascript
javascriptで、オブジェクトであるかを判定するサンプルコードを記述してます。判定する方法は4種類くらいありますが「toString.call」を使用した方法が「{}」のオブジェクトのみを「true」と判定することができます。
環境
- OS windows11 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 109.0.5414.75
オブジェクトであるかを判定
「{}」で表現されるオブジェクトは「toString.call」を使用して判定します。
function isObject(v){
if (toString.call(v).slice(8, -1) === 'Object') return true;
return false;
}
console.log( isObject({}) ) // true
console.log( isObject(JSON) ) // false
console.log( isObject(Math) ) // false
console.log( isObject([]) ) // false
console.log( isObject(new Error()) ) // false
console.log( isObject(new RegExp()) ) // false
console.log( isObject(new String('str')) ) // false
console.log( isObject(new Number(1)) ) // false
console.log( isObject(new Map()) ) // false
console.log( isObject(new Set()) ) // false
console.log( isObject(function() {}) ) // false
console.log( isObject(() => {}) ) // false
console.log( isObject(Symbol) ) // false
console.log( isObject(0) ) // false
console.log( isObject(1) ) // false
console.log( isObject(-10) ) // false
console.log( isObject(true) ) // false
console.log( isObject(false) ) // false
console.log( isObject(NaN) ) // false
console.log( isObject(Infinity) ) // false
console.log( isObject('<p>') ) // false
console.log( isObject(undefined) ) // false
console.log( isObject(null) ) // false
「typeof」の場合
「typeof」の場合は「null」や「配列」も「true」と判定されます。
function isObject(v){
if (typeof v === 'object') return true;
return false;
}
console.log( isObject({}) ) // true
console.log( isObject([]) ) // true
console.log( isObject(JSON) ) // true
console.log( isObject(Math) ) // true
console.log( isObject(null) ) // true
console.log( isObject(new Error()) ) // true
console.log( isObject(new RegExp()) ) // true
console.log( isObject(new String('str')) ) // true
console.log( isObject(new Number(1)) ) // true
console.log( isObject(new Map()) ) // true
console.log( isObject(new Set()) ) // true
console.log( isObject(0) ) // false
console.log( isObject(1) ) // false
console.log( isObject(-10) ) // false
console.log( isObject(true) ) // false
console.log( isObject(false) ) // false
console.log( isObject(function() {}) ) // false
console.log( isObject(() => {}) ) // false
console.log( isObject(Symbol) ) // false
console.log( isObject(undefined) ) // false
console.log( isObject(NaN) ) // false
console.log( isObject(Infinity) ) // false
console.log( isObject('<p>') ) // false
instanceofの場合
instanceofの場合は、関数なども「true」と判定されます。
function isObject(v){
if (v instanceof Object === true) return true;
return false;
}
console.log( isObject({}) ) // true
console.log( isObject([]) ) // true
console.log( isObject(JSON) ) // true
console.log( isObject(Math) ) // true
console.log( isObject(new Error()) ) // true
console.log( isObject(new RegExp()) ) // true
console.log( isObject(new String('str')) ) // true
console.log( isObject(new Number(1)) ) // true
console.log( isObject(new Map()) ) // true
console.log( isObject(new Set()) ) // true
console.log( isObject(function() {}) ) // true
console.log( isObject(() => {}) ) // true
console.log( isObject(Symbol) ) // true
console.log( isObject(null) ) // false
console.log( isObject(0) ) // false
console.log( isObject(1) ) // false
console.log( isObject(-10) ) // false
console.log( isObject(true) ) // false
console.log( isObject(false) ) // false
console.log( isObject(undefined) ) // false
console.log( isObject(NaN) ) // false
console.log( isObject(Infinity) ) // false
console.log( isObject('<p>') ) // false
「getPrototypeOf」の場合
「getPrototypeOf」の場合は、「undefined」や「null」がエラーと判定されてしまいます。
function isObject(v){
if (Object.getPrototypeOf(v).constructor.name === 'Object') return true;
return false;
}
console.log( isObject({}) ) // true
console.log( isObject(JSON) ) // true
console.log( isObject(Math) ) // true
console.log( isObject([]) ) // false
console.log( isObject(new Error()) ) // false
console.log( isObject(new RegExp()) ) // false
console.log( isObject(new String('str')) ) // false
console.log( isObject(new Number(1)) ) // false
console.log( isObject(new Map()) ) // false
console.log( isObject(new Set()) ) // false
console.log( isObject(function() {}) ) // false
console.log( isObject(() => {}) ) // false
console.log( isObject(Symbol) ) // false
console.log( isObject(0) ) // false
console.log( isObject(1) ) // false
console.log( isObject(-10) ) // false
console.log( isObject(true) ) // false
console.log( isObject(false) ) // false
console.log( isObject(NaN) ) // false
console.log( isObject(Infinity) ) // false
console.log( isObject('<p>') ) // false
console.log( isObject(undefined) ) // Uncaught TypeError: Cannot convert undefined or null to object
console.log( isObject(null) ) // Uncaught TypeError: Cannot convert undefined or null to object
-
前の記事
Oracle Database プロシージャを作成する 2023.01.11
-
次の記事
java Listから値を指定して最後にみつかったインデックス番号を取得する 2023.01.11
コメントを書く