1、typeof 可检测除null以外的基本数据类型和function
直接在计算机底层基于数据类型的值(二进制)进行检测
typeof null // "object"
对象存储在计算机中,都是以000开始的二进制存储,null也是,所以检测出来的结果是对象
typeod 普通对象/数组对象/正则对象/日期对象 ==> “object”
2、 instanceof 检测当前实例是否属于这个类
底层机制:只要当前类的原型出现在实例的原型链上,结果都是true
由于可以肆意修改原型指向,所以检测出来的结果是不准的
不能检测基本数据类型
1 instanceof Number // false
let arr=[1,2,3]
arr instanceof Array // true
arr instanceof Object // true
3、constructor
看着比instanceof好用一些,支持基本类型
constructor可以随意修改,检测结果也不准确
let num=1
num.constructor===Number // true
arr.constructor===Array // true
arr.constructor===Object // false
4、Object.prototype.toSting.call()
标准检测数据类型的方法:返回当前实例所属类的信息
Object.prototype.toString.call(arr) // '[object Array]'
Object.prototype.toString.call(num) // '[object Number]'