前置知识:
1. 数据类型:基本类型+引用类型 (一些基础知识...暂未更新完全)
2. 数据类型的判断方式(一些基础知识...暂未更新完全)
3. 一些JS方法
- toString() —— 转化为字符串
- call() —— 改变this的指向,类似于(bind(), apply())
- split() —— 使用指定分割字符串将一个string字符串转化为数组
- slice() —— 截取字符串
- substring()—— 截取字符串
- toLowerCase() —— 字符串转化成小写形式
正文:
typeof 可以正确识别:Undefined、Boolean、Number、String、Symbol、Function 等类型的数据,但是对于其他的都会认为是 object,比如 Null、Date 等,所以通过 typeof 来判断数据类型会不准确。但是可以使用 Object.prototype.toString 实现。
function typeOf(obj) {
- let res = Object.prototype.toString.call(obj).split(' ')[1]
- res = res.substring(0, res.length - 1).toLowerCase()
- return res
// 评论区里提到的更好的写法
+ return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase()
}
typeOf([]) // 'array'
typeOf({}) // 'object'
typeOf(new Date) // 'date'