javascript准确判断各种数据类型

javascript准确判断各种数据类型

Object.prototype.toString.call() 方法

判断基本数据类型

      const a = Object.prototype.toString.call(null)
      console.log(a) // [object Null]
      console.log(a === '[object Null]') //true

      Object.prototype.toString.call(undefined) // [object Undefined]
      Object.prototype.toString.call('abc') // [object String]
      Object.prototype.toString.call(123) // [object Number]
      Object.prototype.toString.call(true) // [object Boolean]

判断原生引用类型

      // **函数类型**
      function fn() {}
      Object.prototype.toString.call(fn) // "[object Function]"
      // **日期类型**
      const date = new Date()
      Object.prototype.toString.call(date) // "[object Date]"
      // **数组类型**
      const arr = [1, 2, 3]
      Object.prototype.toString.call(arr) // "[object Array]"
      // **正则表达式**
      const reg = /[hbc]at/gi
      Object.prototype.toString.call(reg) // "[object RegExp]"
      // **自定义类型**
      function Person(name, age) {
        this.name = name
        this.age = age
      }
      const person = new Person('Rose', 18)
      // 准确判断person是Person类的实例,只能用instanceof 操作符来进行判断,如下所示:
      console.log(person instanceof Person) // true

判断原生JSON对象

const isJSON = window.JSON && Object.prototype.toString.call(JSON);
console.log(isJSON);// 输出结果为”[object JSON]”说明JSON是原生的,否则不是;
原文地址:https://www.cnblogs.com/liaoing/p/14234632.html