判断数据类型toString()

在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指向,才能返回我们想要的结果。

使用方法总结

有些数据类型未使用到,在该方法中未定义,可根据具体需求进行定义。


carbon.png

]

你可能感兴趣的:(判断数据类型toString())