JS数据类型小记
1.js的数据类型包含:7种基础数据类型和1种引用数据类型
7种基础数据类型
- Undefined
- Null
- Boolean
- Number
- String
- Symbol(es6新增)
- BigInt(es10新增)
1种引用数据类型Object
- 普通对象object
- 数组对象Array
- 正则对象RegExp
- 日期对象Date
- 数学函数Math
- 函数对象Function
基础数据类型存储在栈内存中,引用数据类型存储在堆内存中
2.数据类型校验
-
typeof
typeof对于原始类型来说,除了null都可以显示正确的类型,typeof对于对象来说,除了函数都会显示object,所以说typeof并不能准确判断变量到底是什么类型
-
instanceof
instanceof可以正确判断对象的类型,因为内部机制是通过判断对象的原型链中是不是找到类型的prototype,但不能正确判断基础数据类型
-
constructor
constructor可以判断出基础数据类型和引用数据类型,但如果更改了对象的原型,construction就不可靠了
-
Object.prototype.toString.call()
toString()是Object原型,调用该方法可以统一返回格式为
"[object Xxx]"的字符串,其中Xxx就是对象的原型,对于Object对象,直接调用toString()就能返回[object Object],而对于其他对象,则需要通过call来调用,才能返回正确的类型信息
3.实现一个全局通过的数据类型判断方法
function getType(obj) {
let type = typeof obj;
if (type !== 'object') {
return type;
}
return Object.prototype.toString.call(obj).replace(/^[object (\S+)]$/, '$1')
}
\