1. typeof
typeof 只能检测到function、string、number、boolean、undefined、symbol,其他数据类型都会被检测为object。
注: 在日常使用过程中如果要检测数据为Array或实例对象时不能用typeof方法。
console.log(typeof 9898)
console.log(typeof NaN)
console.log(typeof '')
console.log(typeof true)
console.log(typeof undefined)
console.log(typeof Symbol())
console.log(typeof null)
console.log(typeof {})
console.log(typeof [])
console.log(typeof new Date())
console.log(typeof new RegExp())
console.log(typeof new Error())
2. Object.prototype.toString.call(b)
此方法可以准确的检测到数据类型
console.log(toString.call(9898))
console.log(toString.call(true))
console.log(toString.call('no error'))
console.log(toString.call(undefined))
console.log(toString.call({}))
console.log(toString.call([]))
console.log(toString.call(function(){}))
3. instanceof
描述:判断A是不是B的实例,返回一个布尔值,根据构造函数类型判断出数据类型
原理:通过检测对象的原型链上是否含有类型的原型。
使用方法:A instanceof B
返回类型:true || false
console.log(arr instanceof Array )
console.log(date instanceof Date )
console.log(fn instanceof Function )
handleInstanceof (leftData, rightData) {
let leftValue = leftData.__proto__
let rightValue = rightData.prototype
while (true) {
if (leftValue === null) {
return false
} else if (leftValue === rightValue) {
return true
} else {
leftValue = leftValue.__proto__
}
}
}
4. 根据实例对象的构造函数判断数据类型
console.log(arr.constructor === Array)
console.log(date.constructor === Date)
console.log(fn.constructor === Function)
5. Jquery中判断数据类型的常用方法
jQuery对象.isArray()
jQuery对象.isEmptyObject()
jQuery对象.isFunction()
jQuery对象.isNumberic()
jQuery对象.isWindow()
jQuery对象.isXMLDoc()