很简单的判断JavaScript数据类型方法

代码: 

function type(data) {
    let value = /\[object (\w+)]/.exec(
        Object.prototype.toString.call(data)
    );
    return value ? value[1].toLowerCase() : '';
}

 执行结果:

解释:

(1)/\[object (\w+)]/.exec

正则表达式的匹配,其中前中括号 [ :表示中括号表达式的开始,属于特殊字符,要匹配它,需要转义,即加上 \;而后中括号 ] 不属于特殊字符,不必加转义字符

exec() 是一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)

例如:

    var str="[object array]";
	var reg= /\[object (\w+)]/
	var res=reg.exec(str)

返回的结果是:

 ["[object array]", "array", index: 0, input: "[object array]", groups: undefined]
​

 

 

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

toString为Object的原型方法,而Array 、Function等类型作为Object的实例,都重写了toString方法。不同的对象类型调用toString方法时,根据原型链的知识,调用的是对应的重写之后的toString方法(Function类型返回内容为函数体的字符串,Array类型返回元素组成的字符串.....)

(3) return value ? value[1].toLowerCase() : ' '

为了精确起见,将exec返回的结果中我们需要的输出并且首字母转换成小写

这样短短几行就能精确判断数据类型。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值