本文介绍一种基于自定义函数的 JavaScript 变量类型判断方法。通过封装特定逻辑,弥补原生 typeof 运算符在对象、null 及特殊浏览器环境下的不足,提供更全面的类型识别方案。
JavaScript 自定义函数判断变量类型
本文介绍一种基于自定义函数的 JavaScript 变量类型判断方法,供读者参考。
通常使用 typeof 来判断 JavaScript 变量的类型,但在许多场景下,仅靠 typeof 无法满足实际需求。
为此,编写了一个自定义函数以进行更全面的类型判断。
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
更多关于 JavaScript 相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript遍历算法与技巧总结》
希望本文所述对大家 JavaScript 程序设计有所帮助。