判断JS数据类型的方法有:typeof,instanceof,constructor,prototype,$.type()/jquery.type().
1.typeof
typeof最常见的数据类型判断方法,使用方式:typeof 变量
//判断基本数据类型
var a;
console.log(typeof a); //undefined
var b = null;
console.log(typeof b); //object,这里比较特殊,js用null来表示空引用,这个之后再说
var c = 2;
console.log(typeof c); //number
var d = 'abcdef';
console.log(typeof d); //string
var e = true;
console.log(typeof e); //boolean
//判断复杂数据类型
var obj = {
name:'Jack',
age:10
};
console.log(typeof obj); //object
var arr = [1,2,3];
console.log(typeof arr); //object
function fun(){
alert(1);
}
console.log(typeof fun); //function
var nowdate = new Date();
console.log(typeof nowdate); //object
通过上面我们可以很明显看到,typeof用来判断基本数据类型很方便,但是判断复杂数据类型除了Function类型,其他都是返回object,所以typeof不适用来判断复杂类型,判断不出具体类型。
2.instanceof
在我们已知为对象类型时,我们使用该方法就可以判断出它的具体类型,使用方式:变量 instanceof 具体类型
var obj = {
name:'Jack',
age:10
};
console.log(obj instanceof Object); //true
var arr = [1,2,3];
console.log(arr instanceof Array); //true
function fun(){
alert(1);
}
console.log(fun instanceof Function); //true
var nowdate = new Date();
console.log(nowdate instanceof Date); //true
3.constructor
constructor是对象的一个属性,返回对创建此对象的数组函数的引用。使用方法:变量.constructor
//这里null和undefined没有此属性
var a = 12;
console.log(a.constructor); //function Number(){}
console.log(a.constructor === Number); //true
var b = 'abcd';
console.log(b.constructor); //function String(){}
console.log(b.constructor === String); //true
var c = true;
console.log(c.constructor); //function Boolean(){}
console.log(c.constructor === Boolean); //true
var d = {name:'Jack'};
console.log(d.constructor); //function Object(){}
console.log(d.constructor === Object); //true
var e = [1,2,3];
console.log(e.constructor); //function Array(){}
console.log(e.constructor === Array); //true
var f = new Date();
console.log(f.constructor); //function Date(){}
console.log(f.constructor === Date); //true
function fun(){
console.log(123);
}
console.log(fun.constructor); //function Function(){}
console.log(fun.constructor === Function); //true
4.prototype
prototype是对象的一个属性,该属性可以向对象添加属性和方法。(后面单独详解prototype属性)。使用方法:Object.prototype.toString.call( 变量 )
var a;
console.log(Object.prototype.toString.call(a)); //[object Undefined]
console.log(Object.prototype.toString.call(a) === '[object Undefined]'); //true
var b = null;
console.log(Object.prototype.toString.call(b)); //[object Null]
console.log(Object.prototype.toString.call(b) === '[object Null]'); //true
var c = 2;
console.log(Object.prototype.toString.call(c)); //[object Number]
console.log(Object.prototype.toString.call(c) === '[object Number]'); //true
var d = 'abcdef';
console.log(Object.prototype.toString.call(d)); //[object String]
console.log(Object.prototype.toString.call(d) === '[object String]'); //true
var e = true;
console.log(Object.prototype.toString.call(e)); //[object Boolean]
console.log(Object.prototype.toString.call(e) === '[object Boolean]'); //true
var obj = {
name:'Jack',
age:10
};
console.log(Object.prototype.toString.call(obj)); //[object Object]
console.log(Object.prototype.toString.call(obj) === '[object Object]'); //true
var arr = [1,2,3];
console.log(Object.prototype.toString.call(arr)); //[object Array]
console.log(Object.prototype.toString.call(arr) === '[object Array]'); //true
function fun(){
alert(1);
}
console.log(Object.prototype.toString.call(fun)); //[object Function]
console.log(Object.prototype.toString.call(fun) === '[object Function]'); //true
var nowdate = new Date();
console.log(Object.prototype.toString.call(nowdate)); //[object Date]
console.log(Object.prototype.toString.call(nowdate) === '[object Date]'); //true
5.$.type()/jquery.type()/jQuery.type
$.type() 函数用于确定JavaScript内置对象的类型,并返回小写形式的类型名称,是jQuery中的方法,这个方法比较好用,但是需要引入jQuery文件。使用方法:jQuery.type( 变量 )
//判断一个未声明的
console.log(jQuery.type(test) === 'undefined'); //false
var a;
console.log(jQuery.type(a)); //undefined
console.log(jQuery.type(a) === 'undefined'); //true
var b = null;
console.log(jQuery.type(b)); //null
console.log(jQuery.type(b) === 'null'); //true
var c = 2;
console.log(jQuery.type(c)); //number
console.log(jQuery.type(c) === 'number'); //true
var d = 'abcdef';
console.log(jQuery.type(d)); //string
console.log(jQuery.type(d) === 'string'); //true
var e = true;
console.log(jQuery.type(e)); //boolean
console.log(jQuery.type(e) === 'boolean'); //true
var obj = {
name:'Jack',
age:10
};
console.log(jQuery.type(obj)); //object
console.log(jQuery.type(obj) === 'object'); //true
var arr = [1,2,3];
console.log(jQuery.type(arr)); //array
console.log(jQuery.type(arr) === 'array'); //true
function fun(){
alert(1);
}
console.log(jQuery.type(fun)); //function
console.log(jQuery.type(fun) === 'function'); //true
var nowdate = new Date();
console.log(jQuery.type(nowdate)); //date
console.log(jQuery.type(nowdate) === 'date'); //true
以上就是可以用来判断JavaScript数据类型的方法。