1.typeof
const obj = {name: 'c',age: 21}
const arr = [1,2,3]
const str = 'cc'
const boolean = true
const number = 1
const a = null
const func = () => {console.log(2)}
console.log(typeof obj) //object
console.log(typeof arr ) //object
console.log(typeof str ) //string
console.log(typeof boolean ) //boolean
console.log(typeof number ) //number
console.log(typeof a) //object
console.log(typeof func) //function
无法区分Array和Object
2.constructor
const obj = {name: 'c',age: 21}
const arr = [1,2,3]
const str = 'cc'
const boolean = true
const number = 1
const func = () => {console.log(2)}
console.log(obj.constructor == Object) // true
console.log(arr.constructor == Array) // true
console.log(str.constructor == String) // true
console.log(boolean.constructor == Boolean) // true
console.log(number.constructor == Number) // true
console.log(func.constructor == Function) // true
3.object.prototype.toString.call()
const obj = {name: 'c',age: 21}
const arr = [1,2,3]
const str = 'cc'
const boolean = true
const number = 1
const a = null
const func = () => {console.log(2)}
console.log(Object.prototype.toString.call(obj)) // [object Object]
console.log(Object.prototype.toString.call(arr)) // [object Array]
console.log(Object.prototype.toString.call(str)) // [object String]
console.log(Object.prototype.toString.call(boolean)) // [object Boolean]
console.log(Object.prototype.toString.call(number)) // [object Number]
console.log(Object.prototype.toString.call(a)) // [object Null]
console.log(Object.prototype.toString.call(func)) // [object Function]