1. 通过 Object 原型上面的 toString.call(参数) 方法, 将传入来的数据 转换为 [object 数据类型]
2. 使用 replace() 方法对得出的结果进行正则的方式 /\[object (.*?)\] / 裁剪, 就可以得到变量的数据类型。
具体实现代码如下:
const getType = (e) => {
const type = Object.prototype.toString.call(e)
return type.replace(/\[object (.*?)\]/, '$1').toLowerCase()
}
console.log(getType(1)) // number
console.log(getType()) // undefined
console.log(getType('')) // string
console.log(getType(false)) // boolean
console.log(getType(null)) // object
console.log(getType([])) // array
console.log(getType({})) // object
replace() 是字符串对象的方法,用于替换满足指定模式的文本。
/\[object (.*?)\]/ 是一个正则表达式模式。它匹配以 "[object " 开头,紧跟着一个或多个字符(非贪婪匹配),并以 "]" 结尾的部分。
'$1' 是替换的字符串模板,其中的 $1 表示正则表达式模式中括号捕获的部分。
toLowerCase() 是字符串对象的方法,用于将字符串转换为小写形式。