javascript判断数据类型

时间:2009年08月21日作者:愚人码头查看次数:4,431 views评论次数:1

今天在封装MTJS的时候出现了一个问题,用于检查数据类型的typeof在检查数组和对象的时候出来的都是“object”;例如


alert(typeof []);
alert(typeof {});

赶紧问朋友,朋友推荐我使用 pjhome的方法,原来这个方法EXT框架上也有的:


function getType(o) {
var _t;
 return ((_t = typeof(o)) == "object" ? o==null && "null" || Object.prototype.toString.call(o).slice(8,-1):_t).toLowerCase();}

alert(getType("abc")); //string
alert(getType(true)); //boolean
alert(getType(123)); //number
alert(getType([])); //array
alert(getType({})); //object
alert(getType(function(){})); //function
alert(getType(new Date)); //date
alert(getType(new RegExp)); //regexp
alert(getType(Math)); //math
alert(getType(null)); //null

很好很强大,这里Object.prototype.toString.call(o)的意思是借用Object原型的toString方法返回对象的字符串表示,就是0调用toString()方法,返回的格式是[Object array],再使用slice(8,-1)就能把“array”获取出来。(感谢rock,子房做的解释)

在自己搜索的时候还发现了另一种判断数据类型的方法,就是constructor(构造函数):

例如:

alert([].constructor==Array);
  alert({}.constructor==Object);
  alert("123".constructor==String);
  alert((55).constructor==Number);
  alert(true.constructor==Boolean);

声明: 本文采用 BY-NC-SA 协议进行授权 | WEB前端开发
转载请注明转自《javascript判断数据类型

如果你读了我的文章,觉得有帮助: 说明
标签:分类:JS
1条评论
  1. 扑街囝留言于:2009年08月24日16:21

    constructor不能判断没有定义的变量,例如
    var x;
    alert(x.constructor);// x is undefined

    [回复]

发表评论

*

*