javascript判断数据类型

本文过时,请查看 JavaScript 数据类型判断

今天在封装MTJS的时候出现了一个问题,用于检查数据类型的typeof在检查数组和对象的时候出来的都是“object”;例如
[code=”javascript”]
alert(typeof []);
alert(typeof {});
[/code]
赶紧问朋友,朋友推荐我使用 pjhome的方法,原来这个方法EXT框架上也有的:
[code=”javascript”]
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
[/code]

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

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

例如:

[code=”javascript”]alert([].constructor==Array);
??alert({}.constructor==Object);
??alert(“123”.constructor==String);
??alert((55).constructor==Number);
??alert(true.constructor==Boolean);[/code]

赞(0) 打赏
未经允许不得转载:WEB前端开发 » javascript判断数据类型

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

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

    扑街囝10年前 (2009-08-24)回复

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏