1.检验基本类型typeof
console.log(typeof NaN) //number
console.log(typeof "hello")//string
console.log(typeof function(){})//function
//但引用类型和null都是object
console.log(typeof null)
console.log(typeof [])
console.log(typeof {})
2.intanceof检测对象是否是某个类的实例
console.log(123 instanceof Number)//false
let num=new Number(123)
console.log(num instanceof Number)//true
console.log([] instanceof Array)//true
//但所有的引用类型都是Object的实例,也不能检测基本类型0.0
console.log({} instanceof Object)//true
console.log([] instanceof Object)//true
console.log(function(){} instanceof Object)//true
3.利用constructor属性(利用了原型链)
console.log(123 instanceof Number)//false
let num=new Number(123)
console.log(num instanceof Number)//true
console.log([] instanceof Array)//true
//但所有的引用类型都是Object的实例,也不能检测基本类型0.0
console.log({}.constructor == Object)//true
console.log([].constructor == Array)//true
//但只能检测引用数据类型且constructor可以认为改变
4.Object.prototype.toString.call()方法
console.log(Object.prototype.toString.call(123))//[object Number]