判断数据类型
1、typeof
console.log(typeof('100'))
console.log(typeof(100))
console.log(typeof(null))
console.log(typeof({}))
console.log(typeof([]))
console.log(typeof(function () {}))
2、constructor
- 语法:
数据.constructor === 构造函数 , 我们可以通过 对比他等于那个构造函数, 然后确认他是哪个数据类型
- 缺点:
- undefined 和 null 不能使用
- constructor 其实就是一个对象内部的一个属性, 是有可能被修改的
console.log(Array)
console.log(Array.prototype)
console.log(Array.prototype.constructor)
Array.prototype.constructor = '一个错误的修改'
console.log(Array)
console.log(Array.prototype)
console.log(Array.prototype.constructor)
const arr = [1, 2, 3]
console.log(Array.prototype === arr.__proto__)
console.log(Array.prototype.constructor)
console.log('arr', arr.__proto__.constructor === Array)
console.log('arr', arr.constructor === Array)
console.log('arr', arr.constructor === Function)
console.log('arr', arr.constructor === Object)
const obj = {}
console.log(obj.constructor === Object)
console.log(obj.constructor === Array)
const fn = () => {}
console.log('fn', fn.constructor === Function)
console.log('fn', fn.constructor === Object)
const un = undefined
const nu = null
const num = 100
const str = 'QF001'
console.log(un.constructor)
console.log(nu.constructor)
console.log(num.constructor)
console.log(str.constructor)
3、instanceof
- 语法:
数据 instanceof 构造函数
- 缺点:
- undefined 和 null 不能使用
- 引用数据类型, 有可能会被识别对 对象类型
const arr = []
console.log(arr instanceof Array)
console.log(arr instanceof Function)
console.log(arr instanceof Object)
const fn = function () {}
console.log(fn instanceof Function)
console.log(fn instanceof Array)
console.log(fn instanceof Object)
const un = undefined
const nu = null
console.log(un instanceof Undefined)
console.log(un instanceof Null)
4、 Object.prototype.toString.call(要判断数据类型的数据)
console.log(Object)
console.log(Object.prototype)
console.log(Object.prototype.toString)
console.log(Object.prototype.toString.call([]))
console.log(Object.prototype.toString.call([]))
console.log(Object.prototype.toString.call({}))
console.log(Object.prototype.toString.call(100))
console.log(Object.prototype.toString.call('100'))
console.log(Object.prototype.toString.call(undefined))
console.log(Object.prototype.toString.call(null))
console.log(Object.prototype.toString.call(function () { }))
console.log(Object.prototype.toString.call(true))
console.log(Object.prototype.toString.call(/\d/))