タイプのターゲットインスタンス
注:プリミティブ型と関数を除いて、すべてがオブジェクトであるため、typeofは使用できません。(nullを含む);配列はオブジェクトのサブクラスに属しているため、テストにオブジェクトを使用しないでください
var a = {}
var b = []
// 【注意】不要用Object来测试,因为Array属于Object的子类
console.log(a instanceof Array) //false
console.log(b instanceof Array) //true
target.constructor
各インスタンスはプロトタイプのプロパティを継承し、プロトタイプのコンストラクタープロパティは独自のコンストラクターを指すため、カスタムクラスを表示できます。
var a = {}
var b = []
console.log(a.constructor) // [Function: Object]
console.log(b.constructor) //[Function: Array]
Object.prototype.toString.call(target)
1.各オブジェクトには、オブジェクトのタイプを出力するためのデフォルトのtoString関数が付属しています
2.ただし、一部のカスタムオブジェクトはtoStringを書き換える場合があります。したがって、元のオブジェクトプロトタイプから呼び出してから、callを使用してこの環境を置き換えます。
3.カスタムクラスを表示できません。すべてオブジェクトが表示されます
var a = {}
var b = []
console.log(Object.prototype.toString.call(a)) // [object Object]
console.log(Object.prototype.toString.call(b)) // [object Array]