数据类型检测
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]