判断数据类型的方法

为什么要判断数据类型

很多时候封装方法,需要根据不同类型进行不同的操作,所以需要准确判断出数据到底是什么类型

JS数据类型都有哪些

基本类型:NumberStringBooleanUndefinedNullSymbol
引用类型:ObjectArrayFunctionDateRegExpMapSet

怎么判断

使用typeof(不推荐)

基本类型可以判断出来,但是像ArrayNull等,也会判断为Object(因为Null就是一个空对象指针),对是对的,但是不是我们要的精准值

使用instanceof(不推荐)

其实比较常见的用法是用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

所以适用于引用类型,也不能得到我们想要的准确值

Object.prototype.toString(强烈推荐)

Object.prototype.toString可以取的对象的内部属性,最终返回一个字符串,就会准确告诉我们数据类型的准确值;

1
2
3
4
5
6
7
8
9
10
11
Object.prototype.toString.call(1),  // '[object Number]'
Object.prototype.toString.call('1234'), // '[object String]'
Object.prototype.toString.call(true), // '[object Boolean]'
Object.prototype.toString.call([1,2,3]), // '[object Array]'
Object.prototype.toString.call({}), // '[object Object]'
Object.prototype.toString.call(function(){}), // '[object Function]'
Object.prototype.toString.call(Undefined), // '[object Undefined]'
Object.prototype.toString.call(Null), // '[object Null]'
Object.prototype.toString.call(date), // '[object Date]'
Object.prototype.toString.call(reg), // '[object RegExp]'
Object.prototype.toString.call(error) // '[object Error]'

自己在实际使用中,可以封装一下,将最终返回值精简化,例如直接返回numberstring … …


判断数据类型的方法
https://liujiaweb.cn/posts/36932.html
作者
Liu Jia
发布于
2020年8月10日
许可协议