数据检测类型有几种
1.typeof检测:主要用于基本数据类型的检测,包括String、Number、Boolean、Null、Undefined、Symbol、Bigint。然后,对于引用数据类型,如、Object、Arrar、Function、Date、RegExp,typeof只能检测基本数据类型(除null),不能准确地检测引用数据类型。
2.instanceof检测:主要用于引用数据类型的检测。instanceof的本质作用是判断某个对象是由哪个类(构造函数)产生的,所以只能用在引用数据类型上。如果在原型上找到返回true,所以用它可以区分是引用类型还是基本类型数据。
3.constructor检测:不能准确判断null和undefined,其他的都可以。由于类的constructor可以随意更改,此时会存在判断不准确的问题。
4.Object.prototype.toString.call()检测:该方法是最准确的检测数据类型的方法。由于Object.prototype.toString()本身允许被修改,所以需要调用Object.prototype.toString.call(arg)来判断arg的类型,call将arg的上下文指向Object,所以arg执行了Object的toString方法。
这些方法有各自的优点和局限性,选择那种方法取决于具体的数据和需求。