在coding时,经常会遇到对数据进行类型的判断,常用的typeof并不能满足需求,因为使用typeof时,在引用类型中,除了function返回function类型外,其他均返回object,在搜寻其他人怎么做的时候,发现toString是比较完美的方法
es10后不止5种基本数据类型,es6后添加Symbol,es10后又添加了BigInt
现在的数据类型共有8种: Number、String、Boolean、Null、undefined、Object、Symbol、BigInt
基本类型:Number、String、Boolean、Null、Undefined
引用类型:Object,其中包含了Array、Date、Function等
typeof() 方法
基本类型里除了null,其他4中基本类型都能返回对应的类型,但是null时返回的是object,并不是我们想要的结果。
typeof (null )// 返回object
引用类型中,除了function返回function类型外,其他都是返回Object。
typeof([]) // 返回array
对于以上的两种
- Null 有属于自己的数据类型 Null
- 引用类型中的Array、Date、Regex 也都有属于自己的具体类型,而 typeof 对于这些类型的处理,只是返回了其原型链最顶端的 Object 类型,但有时候和我们的需求并不是很一致。
Object.prototype.toString 方法
toString方法
toString() 是 Object 的原型方法,当使用toString()时,默认返回当前对象的 [[Class]] ——内部属性,格式为 [object Type] ,其中 Type就是对象的类型且为大写开头的数据类型。
通过Object原型上的toString()方法,且让方法中的this指向value——我们要判断数据类型的值
需要注意的是:
对于数据类型为Object的对象,直接调用 toString() 就能返回 [object Object] 。其他对象,则需要通过 call / apply 来指定this指向,才能返回我们想要的结果。
使用方法总结
有些数据类型未使用到,在该方法中未定义,可根据具体需求进行定义。
]