JavaScript中判断数据类型的方法

JavaScript中判断数据类型的方法

  • typeof 运算符
  • instanceof 运算符
  • Object.prototype.toString 方法

    1 typeof 运算符

    typeof 数值、字符串、布尔值、undefined分别返回number、string、boolean、undefined。
    对象返回object
      typeof {} //object
      typeof [] //object
      typeof Window //object
      typeof function a(){} //function
      typeof null //object
    

使用typeof 无法区分对象和数组

2 instanceof 运算符

instanceof 可以准确的判断引用数据类型,它的原理是检测构造函数的prototype属性是否在某个实例对象的原型链上
instanceof只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型

var o = {};
var a = [];

o instanceof Array // false
a instanceof Array // true

使用typeof 和instanceof 都不能完全准确的判断数据类型

3 Object.prototype.toString 方法

    Object.prototype.toString({})       // "[object Object]"
    Object.prototype.toString.call({})  // 同上结果,加上call也ok
    Object.prototype.toString.call(1)    // "[object Number]"
    Object.prototype.toString.call('1')  // "[object String]"
    Object.prototype.toString.call(true)  // "[object Boolean]"
    Object.prototype.toString.call(function(){})  // "[object Function]"
    Object.prototype.toString.call(null)   //"[object Null]"
    Object.prototype.toString.call(undefined) //"[object Undefined]"
    Object.prototype.toString.call(/123/g)    //"[object RegExp]"
    Object.prototype.toString.call(new Date()) //"[object Date]"
    Object.prototype.toString.call([])       //"[object Array]"
    Object.prototype.toString.call(document)  //"[object HTMLDocument]"
    Object.prototype.toString.call(window)   //"[object Window]"

封装一个全局通用的函数实现数据类型的判断

  function getDataType(obj){
  return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');  // 注意正则中间有个空格
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值