JS数据类型小记

126 阅读1分钟

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')
}

\