typeof 检测
缺点: 引用数据类型判断的时候不太准确
<script>
let num = 0
console.log(typeof(num))
console.log(typeof(n))
console.log(typeof(obj))
</script>
constructor 检测
语法: 数据.constructor === 构造函数
我们可以通过 对比它等于那个构造函数,然后确认它是那个数据类型
缺点: undefined 和 null 不能使用
constructor 其实就是一个对象内部的一个属性,是有可能被修改的
let arr = []
let obj = {}
let num = 100
console.log(arr.__proto__.constructor === Array)
console.log(obj.__proto__.constructor === Object)
console.log(num.__proto__.constructor === Number)
instanceof 检测
语法: 数据 instanceof 构造函数
缺点: undefined 和 null 不能使用
引用数据类型,有可能会被识别 对 对象类型
let arr = [1,2]
let obj = {}
let num = 123
console.log(arr instanceof Array)
console.log(obj instanceof Object)
console.log(num instanceof Number)
Object.prototype.toString.call() 检测
Object.prototype.toString.call(要判断数据类型的数据)
能检测所有类型
let arr = []
let obj = {}
let num = 100
console.log(Object.prototype.toString.call(arr))
console.log(Object.prototype.toString.call(obj))
console.log(Object.prototype.toString.call(num))