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

tech2025-05-05  5

代码: 

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返回的结果中我们需要的输出并且首字母转换成小写

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

 

最新回复(0)