1.通用的是typeof判断:
此值未定义:Undefined
此值为布尔值:boolean
此值为字符串string
此值为数值number
此值为对象或Null
此值为函数:function
2.Object类型的情况可以选用instanceof
1)数组类型
var arr = [1, 2, 3];
arr instanceof Array
测试结果:true
2)日期类型
var dt = new Date();
dt instanceof Date
测试结果:true
3.construct判断:
alert(c.constructor === Array) ----------> true
alert(d.constructor === Date) -----------> true
alert(e.constructor === Function) -------> true
constructor 在类继承时会出错
eg:
function A(){};
function B(){};
A.prototype = new B(); //A继承自B
var aObj = new A();
alert(aobj.constructor === B) -----------> true;
alert(aobj.constructor === A) -----------> false;
而instanceof方法不会出现该问题,对象直接继承和间接继承的都会报true:
alert(aobj instanceof B) ----------------> true;
alert(aobj instanceof B) ----------------> true;
解决:
aobj.constructor = A; //将自己的类赋值给对象的constructor属性。//直接赋值,不继承
alert(aobj.constructor === A) -----------> true;
alert(aobj.constructor === B) -----------> false; //基类不会报true了;
jquery.type()判断
如果对象是undefined或null,则返回相应的“undefined”或“null”。
jquery.type( undefined ) === "undefined"
jquery.type( null ) === "null"
如果对象有一个内部的[[Class]]和一个浏览器的内置对象的 [[Class]] 相同,我们返回相应的 [[Class]] 名字。
jQuery.type( true ) === "boolean"
jQuery.type( 3 ) === "number"
jQuery.type( "test" ) === "string"
jQuery.type( function(){} ) === "function"
jquery.type( [] ) === "array"
jquery.type( new Date() ) === "date
判断依据
1.undefined
只有一个值,使用var声明变量,此变量为undefined
对于未初始化和未声明的变量,执行tyoeof时都返回undefiled
2.Null
只有一个值,此值为null
表示一个空对象指针,返回null
初始化为null,定义的变量可用于保存其他对象
3.boolean
两个值true.false
转换为boolean的规则:
boolean true false
string 任何非空字符串 空字符串
number 非0数字 0和null
object 任意对象 null
undefiled undefiled
4.number
表示整数,浮点数
Nan:非数值{涉及Nan的操作都会返回Nan
Nan与任意数值不等,与自己不想等}
5.string
字符串一旦创建就不能改变,若要改变,就用另一个包含数值的字符串填该字符串
转为字符串:
tostring:null.undefiled不用此方法
string:{若值有tostring方法,用tostring.
null值返回null
undefiled返回undefiled
6.object
construct保存用于创建当前对象的函数
propername检查给定属性在当前对象属性中是否存在
tolacalestring返回对象的字符串表示
tostring返回对象的字符串表示
valueof返回对象的字符串表示,数值,布尔值