js判断类型

js 中判断类型

js中常用有三种判断类型的方式,但 都有优缺点。

typeof 判断 js的类型

优点
    可以判断一些简单类型,比如undefined.

缺点:无法判断 null 的类型,也无法完整判断数字

    typeof( null ) == 'object' // true

instanceof 判断 已知 js 的类型

这个判断类型用的比较少,一般来说都只能判断已知js的类型

Object instanceof Object // true
Function instanceof Function // true

object.prototype.tostring 判断js的类型

这个在项目中比较常见,判断方法比较全,贴一波封装后的代码

class JsType {
  constructor(){
    this.isType = Object.prototype.toString;
  }
  isArray( arr ) { // 判断数组
    return  this.isType.call( arr ) === '[object Array]' ;
  }
  checkNaN ( obj ) { // 判断 nan
    return obj !== obj;
  }
  isNumber( num ) { //判断number
    let res = false;
    let type = this.isType.call( num );
    if ( type == '[object Number]') {
      res = true;
    } else if ( !( this.checkNaN( Number(num) )) ){
      return this.isType.call( Number(num) ) === '[object Number]';
    }
    return res;
  }
  isFunction( fn ) { // 判断 fn
    return  this.isType.call( fn ) === '[object Function]';
  }
  isString( str ) {
    return this.isType.call( str ) === '[object String]';
  }
  isReg( reg ) {
    return this.isType.call( reg ) === '[object RegExp]';
  }
  isUndefined( str ) {
    return this.isType.call( str ) === '[object Undefined]';
  }
  isObject( obj ) {
    return this.isType.call( obj ) === '[object Object]';
  }
  isNull ( obj ) {
    return this.isType.call( obj ) === '[object Null]';
  }
  isDate( date ) {
    return this.isType.call(date) === '[object Date]';
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值