typeof
可以判断 number,string,object,boolean,function,undefined,symbol 这七种类型。
注意:
1. typeof null === 'object' // true
2. 无法判断具体是哪一种 object
instanceof
可以判断对象的具体类型,可以判断一个实例是否是其父类型或者祖先类型的实例。
注意:
1. null instanceof null // TypeError: Right-hand side of 'instanceof' is not an object
instanceof判断null类型时会报错
2. [ ] instanceof Array // true
[ ] instanceof Object // true
数组也可以被判断为Object
Object.prototype.toString.call()
推荐,支持各种类型
Object.prototype.toString.call(1) // "[object Number]"
Object.prototype.toString.call('hi') // "[object String]"
Object.prototype.toString.call({a:'hi'}) // "[object Object]"
Object.prototype.toString.call([1,'a']) // "[object Array]"
Object.prototype.toString.call(true) // "[object Boolean]"
Object.prototype.toString.call(() => {}) // "[object Function]"
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
Object.prototype.toString.call(Symbol(1)) // "[object Symbol]"