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]'