typeof方法
typeof 演算子 typeof は、オペランドの型を示す文字列を返す単項演算子です。
console.log( typeof {
})
console.log( typeof [])
console.log( typeof new Date())
出力結果:
上記の単純な例では、typeof の欠陥を見つけることができます。その機能は制限されており、Date 型と RegExp 型に対して "object" を返します。
したがって、オブジェクトとプリミティブ型を区別する場合にのみ役立ちます。あるオブジェクト タイプを別のオブジェクト タイプと区別するには、他の方法を使用する必要があります。
instanceof方法
instanceof 演算子では、左側のオペランドがオブジェクトであり、右側のオペランドがオブジェクトのクラスまたはコンストラクターの名前である必要があります。object がクラスまたはコンストラクターのインスタンスである場合、instanceof 演算子は true を返します。object が指定されたクラスまたは関数のインスタンスでない場合、または object が null の場合は false を返します。
let arr=[]
let obj={
}
let date=new Date
console.log(arr instanceof Array)
console.log(arr instanceof Object)
console.log(arr instanceof RegExp)
console.log(obj instanceof Array)
console.log(obj instanceof Object)
console.log(obj instanceof RegExp)
console.log(date instanceof Array)
console.log(date instanceof Object)
console.log(date instanceof Date)
出力結果:
コンストラクタ プロパティ
JavaScript では、各オブジェクトにコンストラクター属性があり、オブジェクトを初期化するコンストラクターを参照し、不明なオブジェクトの型を判別するためによく使用されます。たとえば、既知の値が与えられた場合、 typeof 演算子を使用して、それがプリミティブ値かオブジェクトかを判断します。オブジェクトの場合は、constructor 属性を使用してその型を決定できます。
オブジェクトが配列かどうかを判断する簡単な例を作成します。
let arr=[]
console.log(arr.constructor == Array)