现在的位置: 首页 > 综合 > 正文

javascript判断变量类型的自定义函数

2013年05月05日 ⁄ 综合 ⁄ 共 1391字 ⁄ 字号 评论关闭

通常用typeof来判断js变量的类型,但很多时候仅仅typeof满足不了要求的。

我写了一个自定义函数来做这个事,判断的比较全面了。

 

New

function
varType(v){

  if
(
typeof
v===
"object"
){

    if
(v===
null
)
return
'null'
;

    if
(v.
constructor
)

      return
(v.
constructor
.toString()).match(/(?:
)[/w/$]+/)[

0
];

    if
(
typeof
typeof2===
'undefined'
&&
window
.execScript){

     
window
.execScript(
'Function vbsTypeName(o):vbsTypeName=TypeName(o):End
Function'

,
'vbscript'
);

      window
.execScript(
'function typeof2(o){return vbsTypeName(o)}'
,
'jscript'
);

    }

    if
(
typeof

typeof2!==
'undefined'
){

      return
typeof2(v);

    }

    return
"object"
;

  }

  return typeof
v;

}

//对于普通js常量和js对象,各浏览器是基本一致的

alert
(varType());
//undefined

alert
(varType(
100
));
//number

alert
(varType({}));
//Object

alert
(varType([]));
//Array

alert
(varType(/ /));
//RegExp

alert
(varType(
new
Date
()));
//Date

alert
(varType(
Date
));
//function

alert
(varType(
Object
));
//function

alert
(varType(
RegExp
));
//function

//对于DOM对象,各浏览器可能会有不同值

alert
(varType(
window
));
//IE:HTMLWindow2 FF:Window

alert
(varType(
document
));
//IE:HTMLDocument FF:HTMLDocument

alert
(varType(
document
.body));
//IE:HTMLBody FF:HTMLBodyElement

alert
(varType(
Option
));
//IE:Object  FF:function

alert
(varType(
Image
));
//IE:Object  FF:function

alert
(varType(
navigator
));
//IE:DispHTMLNavigator FF:Navigator

//以下几个只适用于IE,其他内核浏览器不支持

alert
(varType(
ActiveXObject
));
//IE:function

alert
(varType(
Enumerator
));
//IE:function

alert
(varType(
new
ActiveXObject
(
"Scripting.Dictionary"
)));
//IE:Dictionary

alert
(varType(
new
Enumerator
()));
//IE:Enumerator

 

抱歉!评论已关闭.