数据类型检测
数据类型
基本数据类型:字符串、数字、布尔、undefined、null、Symbol
引用数据类型:对象、数组、函数、正则、日期
typeof 检测
结论:
简单数据类型:除了null检测结果为object,其余都能正常检测
引用数据类型:function以及构造函数检测值为function,其余全为object
console.log(typeof 123) //number
console.log(typeof 'a') //string
console.log(typeof false) //boolean
console.log(typeof undefined) //undefined
console.log(typeof null) //⭐Object
console.log(typeof function () { }) //function
console.log(typeof Object); //function Object是构造函数
console.log(typeof Symbol()) //symbol
console.log(typeof /1-9/) //object
console.log(typeof new Date()) //object
instance of
结论:
使用instanceof可以检测构造函数的实例对象,但不能检测字面量、字符串、布尔值
constructor
结论
每个对象身上都有一个constructor属性,它的作用是说明它自身是哪个构造函数的原型对象
不能用于undefined和null的判断,因为他们没有构造函数
说明constructor是可以修改的
console.log([].constructor === Array); // true
console.log({}.constructor === Object); // true
console.log((1).constructor === Number); // true
console.log(('a').constructor === String); // true
console.log(true.constructor === Boolean); // true
console.log(null.constructor); // 报错:因为null没有构造函数
console.log(undefined.constructor); // 报错 因为undefined没有构造函数
toString方法
结论:
推荐使用,可以检测所有数据类型的方法,都能返回正确结果