您的位置:首页 > Web前端 > JavaScript

浅谈JavaScript数据类型检测

2012-12-09 15:15 686 查看
1)、通常在检测JavaScript中类型的时候都是使用typeof运算符,然后返回一个识别运算数类型的字符串,对于任何的变量来说,使用typeof 运算符返回结果只有6中类型

1、number 2、string 3、boolean 4、object 5、function 6 、undefined。 但是在大家可以试试在使用typeof检测null值的时候,返回的是object,这个有点不适合,大家想,null应该是没有类型的说法的,所以一般人在处理null的类型判断都是做一个方法

function type(oo){
   return (oo ==null) ? "null":(typeof oo);
}


2)、但是typeof 不能够检测复杂的数据类型的,比如表达式对象,日期对象,数学对象。

它只能够返回一个object类型,并不能知道具体到日期什么的,

javascript中一种判断数据类型的方法,constructor属性,使用方法是

var value=underfined;

alert(value.constructor);

但是数值直接量是不能这样用的 ,需要添加一个小括号,这样的话,小括号运算符能把数值直接量转换为对象,有点像Java中的Integer 和 int 类型一样,

alert((30).constructor)

3)、使用toString()方法也是可以检测对象类型,而且是最准确的,通常在是把对象转成字符串,然后检测下字符串中是否包含了数组所特有的标准字符,

返回的字符串形式如下

[object calss]

object 是通用类型,那么class 表示对象的内部类型,内部类型的名称与该对象的的构造函数名是对应的,比如Array对象的class 是Array,Date对象的class “Date”

具体写法如下,

var date = new Date();
		   alert(typeof date);
		   var m=Object.prototype.toString;
		   alert(m.apply(date));


奉献一段通用的类型检测代码

function type(o){

var _toString = Object.prototype.toString;

var _type ={

"underfined":"underfined",

"number":"number",

"boolean":"boolean",

"string":"string",

''[object Function] ":"function",

''[object RegExp] ":"RegExp",

''[object Array] ":"Array",

''[object Date] ":"Date",

''[object Error] ":"Error"

}

return _type[typeof o] || _type[_toString.call(o)] || (o?"object":"null")

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: