2021-07-03 js获取数据类型方法

1. typeof

typeof 只能检测到function、string、number、boolean、undefined、symbol,其他数据类型都会被检测为object。

注: 在日常使用过程中如果要检测数据为Array或实例对象时不能用typeof方法。
console.log(typeof 9898) //number
console.log(typeof NaN) //number NaN为number类型
console.log(typeof '') //string
console.log(typeof true) //boolean
console.log(typeof undefined) //undefined
console.log(typeof Symbol()) //symbol
console.log(typeof null) //object
console.log(typeof {}) //object
console.log(typeof []) //object
console.log(typeof new Date()) //object
console.log(typeof new RegExp()) //object
console.log(typeof new Error()) //object

2. Object.prototype.toString.call(b)

此方法可以准确的检测到数据类型
console.log(toString.call(9898)) //[object Number]
console.log(toString.call(true)) //[object Boolean]
console.log(toString.call('no error')) //[object String]
console.log(toString.call(undefined)) //[object Undefined]
console.log(toString.call({})) //[object Object]
console.log(toString.call([])) //[object Array]
console.log(toString.call(function(){})) //[object Function]

3. instanceof

描述:判断A是不是B的实例,返回一个布尔值,根据构造函数类型判断出数据类型
原理:通过检测对象的原型链上是否含有类型的原型。
使用方法:A instanceof B 
返回类型:true || false
// A instanceof B 
console.log(arr instanceof Array ) // true
console.log(date instanceof Date ) // true
console.log(fn instanceof Function ) // true

// instanceof 方法实现原理
// 判断右边变量的原型是否在左边变量的原型链上
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. 根据实例对象的构造函数判断数据类型

// A.constructor === B
console.log(arr.constructor === Array) //true
console.log(date.constructor === Date) //true
console.log(fn.constructor === Function) //true

5. Jquery中判断数据类型的常用方法

jQuery对象.isArray() //判断是否为数组
jQuery对象.isEmptyObject() //判断是否为空对象
jQuery对象.isFunction() //判断是否为函数
jQuery对象.isNumberic() //判断是否为数字
jQuery对象.isWindow() //判断是否为window对象
jQuery对象.isXMLDoc() //判断判断一个DOM节点是否处于XML文档中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值