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]