javascript增强typeof 对复杂类型的判断

js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。

typeof
由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
    console.log(typeof   123)   //number
    console.log(typeof   'abc')  //string
    console.log(typeof    true)       //boolean
    console.log(typeof    undefined)   //undefined
    console.log(typeof new String())   //object
    console.log(typeof new Number())   //object
    console.log(typeof    null)        //object
    console.log(typeof    {})           //object
    console.log(typeof    [])           //object
    console.log(typeof   console.log)       //function

可以看到 typeof 在对复杂类型进行判断统一都是object类型的

 toString方法可以获得复杂对象类型更加详细的信息

var toString = {}.toString
console.log(toString.call(new Date))     //[object Date]
console.log(toString.call([]))                //[object Array]
console.log(toString.call({}))               //[object Object]

 

封装函数

var toString = {}.toString
    var types = {"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object","[object Error]":"error"}
    function getType( obj ) {
        //如果为null 或者 undefined 直接返回 'null','undefined'
        if ( obj == null ) {
            console.log(1,obj)
            return String( obj );
        }
        //如果是复杂对象类型或者函数类型
        if(typeof obj === "object" || typeof obj === "function"){
            return types[ toString.call(obj) ] || "object"
            //如果是基本类型
        }else {
            return typeof obj
        }
    }

    console.log(getType(123))       //number
    console.log(getType('abc'))     //string
    console.log(getType(true))      //boolean
    console.log(getType(new String()))  //string
    console.log(getType(new Number()))  //number
    console.log(getType(undefined))     //undefined
    console.log(getType(null))          //null
    console.log(getType({}))            //object
    console.log(getType([]))            //array
    console.log(getType(console.log))   //function

 

转载于:https://www.cnblogs.com/linax/p/9941428.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值