获取详细数据类型 getType 四行代码搞定

之前项目中获取数据类型的getType是用的typeof结合instanceof来做的,首先这样做是可以的,但并不是一个好办法,因为手动枚举是不靠谱的,不具备完整性。
第一,有可能忽略某些类型;第二,ES 有会继续增加新的类型,如 Symbol BigInt 等。
刚好项目中用到了WeakMapWeakSet,需要进行数据类型判断,老版本的getType就没办法获取正确的数据类型。

function getType(x: any): string {
    const originType = Object.prototype.toString.call(x) // '[object Array]'
    const spaceIndex = originType.indexOf(' ') // 获取空格的索引
    const type = originType.slice(spaceIndex + 1, -1) // 根据索引截取字符串
    return type.toLowerCase() // 转小写
}

为什么新getType里面用的都是字符串操作,为什么不直接分割成数组再直接获取数据呢?字符串操作的时间比数组操作更快。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容