1.typeof
typeof xxx得到的值有以下几种类型:undefined 、 number、 string、boolean、symbol、function、object。
typeof 对于原始类型来说,除了 null 都可以显示正确的类型。
typeof 1 // 'number'
typeof '1' // 'string'
typeof undefined // 'undefined'
typeof true // 'boolean'
typeof Symbol() // 'symbol'
typeof
对于对象来说,除了函数都会显示
object
,所以说
typeof 并不能准确判断变量到底是什么类型。
typeof null // 'object'
typeof [] // 'object'
typeof {} // 'object'
typeof console.log // 'function'
typeof function () {} // 'function'
2.instanceof
instanceof 可以判断引用类型;Object 是所有 class 的父类(JS引擎自己实现的)
console.log({} instanceof Object); // true
console.log({} instanceof Array); // false
console.log([] instanceof Object); // true
console.log([] instanceof Array); // true
3.prototype.toString
Object.prototype.toString.call(obj) === '[object Object]'
Object.prototype.toString.call(arr) === "[object Array]"