js数据类型

118 阅读1分钟

数据类型

  1. 原始类型
    1. Primitive原始的
    2. 6种
      1. null
      2. undefined
      3. string
      4. number
      5. bool
      6. symbol
    3. 特点
      1. 存储的都是值
        1. 没有方法调用
  2. 原始类型的坑
    1. 特例
      1. '1'.toString()可以调用
        1. 此时被强制转化成String类型
    2. number类型是浮点类型
    3. string类型不可变
      1. 无论调用什么方法
        1. '1'.toString()
          1. 返回的还是string类型
            1. 只是调用toString的时候
            2. 被认为是String的对象类型
    4. null不是对象类型
      1. 但是typeof null === 'object'
      2. 历史原因
  3. 判断类型
    1. typeof
      1. 不能准确判断
        1. typeof null === 'object'
        2. 'function'typeof [] // 'object'
        3. typeof {} // 'object'
        4. typeof console.log // 'function'
    2. instanceof
      1. 判断对象的正确类型
        1. 通过原型链判断
      2. 判断原始类型
        1. 默认不行
        2. 解决办法
          1. static Symbol.hasInstance(val){return typeof(val)==='string')}
            1. static为es6语法糖
              1. 静态属性或者静态方法
              2. 类直接调用
                1. 而不是类的实例上调用