ES6结合正则判断js数据类型
Posted James的博客园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6结合正则判断js数据类型相关的知识,希望对你有一定的参考价值。
ES5:(有重复问题)
typeof 1 ---> ‘number‘ typeof ‘hello‘ ---> ‘string‘ typeof alert ---> ‘function‘ typeof [1,2,3] ---> ‘object‘ typeof {a:1,b:2} ---> ‘object‘ typeof null ---> ‘object‘ typeof NaN ---> ‘number‘ typeof undefined ---> ‘undefined‘ typeof Symbol() ---> ‘symbol‘
ES6: (修补了问题)
console.log(Object.prototype.toString.call("hello"));//[object String] console.log(Object.prototype.toString.call(123));//[object Number] console.log(Object.prototype.toString.call(true));//[object Boolean] console.log(Object.prototype.toString.call(undefined));//[object Undefined] console.log(Object.prototype.toString.call(null));//[object Null] console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object] console.log(Object.prototype.toString.call(function(){}));//[object Function] console.log(Object.prototype.toString.call([]));//[object Array] console.log(Object.prototype.toString.call(new Date));//[object Date] console.log(Object.prototype.toString.call(/d/));//[object RegExp] function foo(){} console.log(Object.prototype.toString.call(new foo()));//[object Object]
最后ES6结合正则的方式,使用最方便:
const isType = type =>(/^[objects(.*)]$/.exec(Object.prototype.toString.call(type)))[1];
isType({}) // ‘Object‘
isType([]) // ‘Array‘
注意首字母是大写
.
以上是关于ES6结合正则判断js数据类型的主要内容,如果未能解决你的问题,请参考以下文章
js数组和对象相等判断拷贝详解(结合几个现象讲解引用数据类型的趣事)