JavaScript实现一个函数getType 获取所有的数据类型

利用Object.prototype.toString.call()方法,可以获取到[object ?],其中的?就是我们想要获取的数据类型。
对于Object.prototype.toString.call(),前面有做过一次简单的分析:简单分析Object.prototype.toString.call(arr)判断数组类型
之后思路就是截取到这个?这里用的是replace方法将前面’[object ‘替换成’‘,之后把右边的’]‘替换成’',再将首字母转换成小写。最后判断输入的内容是否属于object类型(typeof判断) 如果是 通过该方法转换,否则直接输出typeof判断的类型即可。

function getType(obj) {
    if (obj === null) {
        return String(obj)
    }
    const toType = (obj) => {
        // '[object RealType]' => realtype
        return Object.prototype.toString.call(obj).replace('[object ', '').replace(']', '').toLowerCase()
    }
    return typeof obj === 'object' ?
        toType(obj) :
        typeof obj;
}

// 调用
console.log(getType(null)) // -> null
console.log(getType(undefined)) // -> undefined
console.log(getType({})) // -> object
console.log(getType([])) // -> array
console.log(getType(123)) // -> number
console.log(getType(true)) // -> boolean
console.log(getType('123')) // -> string
console.log(getType(/123/)) // -> regexp
console.log(getType(new Date())) // -> date
console.log(getType(new Set([])))// ->set
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值