js判断数据类型

本文详细介绍了JavaScript中如何准确判断对象类型,特别是使用`Object.prototype.toString`方法结合`call`或`apply`来检测Array, Date, RegExp等复杂类型的技巧。并提供了一个稳定可靠的类型判断函数示例,该函数能够处理包括基本类型和引用类型在内的各种情况。
摘要由CSDN通过智能技术生成

js万物皆对象,只用typeOf是无法判断类型的。

基本类型(null):String(null);

基本类型(string/number/boolean/undefined)+function:直接typeof即可;

其他引用类型(Array/Date/RegExp Error):调用toString之后根据[object type]进行判断。

解析Object.toString方法:

每个对象都有toString方法,toString返回"[object type]",type指的是对象的类型;

用toString()来检测对象类型;

可以通过toString()来获取每个对象的类型。

为了每个对象都能通过Object.prototype.toString()来检测,需要以Function.prototype.call或者Function.prototype.apply()的形式来调用:

let toString = Object.prototype.toString;
toString.call(new Date);//[object Date]
toString.call(new String);//[object String]
toString.call(Math);//[object Math]

toString.call(undefined);//[object Undefined]
toString.call(null);/[object Null]

封装一个很稳的的类型判断函数:

let class2type={}
'Array Date RegExp Object Error'.split(' ').forEach(e=>class2Type['[object'+e+']']=e.toLowerCase())
function type(obj){
  if(obj=null){
    return String(obj)
  }
  return typeof obj ==='object' ? class2type[Object.toString.call(obj)] || 'object' : typeof obj
}

注:toLowerCase()把字符转为小写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值