js检测数据类型的方法你都掌握了几个?

数据类型检测

 1 typeof检测
 2 var obg = {};
 3 var ary = [];
 4 var reg = /^$/;
 5 var fn = function () {};
 6 var num = 1;
 7 var bool = true;
 8 var nul = null;
 9 var undef = undefined;
10 var str = "";
11 console.log(typeof obg);//"object"
12 console.log(typeof ary);//"object"
13 console.log(typeof num);//"number"
14 console.log(typeof reg);//"object"
15 console.log(typeof fn);//"function"
16 console.log(typeof bool);//"boolean"
17 console.log(typeof nul);//"object"
18 console.log(typeof undef);//"undefined"
19 console.log(typeof str);//"string"*/

typrof不能具体细分是正则、数组、null、对象,因为用typeof检测的时候结果都是"object"

2、instanceof检测,只要在实例的原型链上检测出来的结果都是true

 1 var num = 1;字面量方式创建
 2 console.log( 1 instanceof Number); ->false
 3 var num = new Number(1);实例方式创建
 4 console.log( num instanceof Number);->true
 5 var ary = [];
 6 console.log(ary instanceof Array);->true
 7 console.log(ary instanceof Object);->true
 8 var fn = function () {};
 9 console.log(fn instanceof Function);->true
10 console.log(fn instanceof Object);->true

 1 var num = 1;字面量方式创建
 2 console.log( 1 instanceof Number); ->false
 3 var num = new Number(1);实例方式创建
 4 console.log( num instanceof Number);->true
 5 var ary = [];
 6 console.log(ary instanceof Array);->true
 7 console.log(ary instanceof Object);->true
 8 var fn = function () {};
 9 console.log(fn instanceof Function);->true
10 console.log(fn instanceof Object);->true
3、constructor 构造函数可以处理基本数据类型检测

1     var ary = [];
2     console.log( ary.constructor === Array);
3     var num = 1;
4     console.log(num.constructor === Number)
4、Object.prototype.toString.call最准确最常用的方法

 1     var ary = [];
 2     var reg = /^$/;
 3     var fn = function () {};
 4     var num = 1;
 5     var bool = true;
 6     console.log(Object.prototype.toString.call(ary));->[object Array]
 7     console.log(Object.prototype.toString.call(reg));->[object RegExp]
 8     console.log(Object.prototype.toString.call(fn));->[object Function]
 9     console.log(Object.prototype.toString.call(num));->[object Number]
10     console.log(Object.prototype.toString.call(bool));->[object Boolean]
原文地址:https://www.cnblogs.com/wuxianqiang/p/6445122.html