js类型检测方式

从最垃圾的方式到最牛逼的方式依次排列为:typeof --> constructor --> instanceof --> toString

1.typeof

检测对象类型太过模糊,function、object、array类型都会返回object,所以此方法垃圾,但实用性很强,气场很强大

2.constructor 

实例对象的构造函数 (实例对象.constructor),返回构造函数,可以分辨出类型

var str = 'abc';
        var num = 100;
        var arr = new Array();
        var date = new Date();
        alert(str.constructor);
        alert(num.constructor);
        alert(arr.constructor);
        alert(date.constructor);

3.instanceof

判断一个对象是否是一个构造函数(类)的实例。注意此方法只能检测实例对象。返回布尔值

        var str=new String('abc');
        var num=new Number(100);
        var arr=new Array();
        var date=new Date();
        alert(str instanceof String);
        alert(num instanceof Number);
        alert(arr instanceof Array);
        alert(date instanceof Date);
        alert(str instanceof Object);

4.toString()

最牛逼的五星级方法,此方法功能强大,既可以进制转换,又可以转字符串,使用起来逼格级高

        console.log(Object.prototype.toString.call(5).slice(8,-1));
        console.log(Object.prototype.toString.call('abc').slice(8,-1));
        console.log(Object.prototype.toString.call(true).slice(8,-1));
        console.log(Object.prototype.toString.call(function(){}).slice(8,-1));
        console.log(Object.prototype.toString.call([]).slice(8,-1));
        console.log(Object.prototype.toString.call({}).slice(8,-1));
        console.log(Object.prototype.toString.call(/\d/g).slice(8,-1));
        console.log(Object.prototype.toString.call(new Date).slice(8,-1));
        console.log(Object.prototype.toString.call(null).slice(8,-1));
        console.log(Object.prototype.toString.call(undefined).slice(8,-1));
        console.log(Object.prototype.toString.call(Math).slice(8,-1));
        // Number
        // String
        // Boolean
        // Function
        // Array
        // Object
        // RegExp
        // Date
        // Null
        // Undefined
        // Math

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值