判断数据类型的几种方法
typeof
但是typeof null 的值是Object,所以他没办法分辨null和Object数据类型
instanceof
instanceof只能判断对象是否存在于目标对象的原型链上
constructor
xx.constructor xx.constructor.name
Object.prototype.toString.call()
可以检测出null、String、Boolean、Number、undefined、array、function、Object、date、match数据类型,所以他是很好的一种基本类型检测方式,但是不能判断实例的数据类型。
至于typeof null的结果是Object的原因是由于在JS中,不同对象都是使用二进制进行存储的,如果前三位都是0的话,系统都会判定为Object类型,而null的二进制是8个0,所以也会被判断为Object