JavaScript基于自定义函数判断变量类型的实现方法


Posted in Javascript onNovember 23, 2016

本文实例讲述了JavaScript基于自定义函数判断变量类型的实现方法。分享给大家供大家参考,具体如下:

通常用typeof来判断js变量的类型,但很多时候仅仅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 相关文章推荐
js 图片等比例缩放代码
May 13 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
Dec 21 Javascript
jQuery通过扩展实现抖动效果的方法
Mar 11 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
Mar 08 Javascript
JavaScript运动框架 多值运动(四)
May 18 Javascript
简述Angular 5 快速入门
Nov 04 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
Dec 24 jQuery
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
webpack打包html里面img后src为“[object Module]”问题
Dec 22 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
JS实现音乐钢琴特效
Jan 06 Javascript
详解如何使用Node.js实现热重载页面
May 06 Javascript
JavaScript实现的CRC32函数示例
Nov 23 #Javascript
JavaScript 控制字体大小设置的方法
Nov 23 #Javascript
微信小程序  wx.request合法域名配置详解
Nov 23 #Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 #Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 #Javascript
jQuery实现根据生日计算年龄 星座 生肖
Nov 23 #Javascript
JS DOMReady事件的六种实现方法总结
Nov 23 #Javascript
You might like
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
js中document.write和document.writeln的区别
2018/03/11 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
python在命令行下使用google翻译(带语音)
2014/01/16 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
浅谈python中的占位符
2017/11/09 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
python对象与json相互转换的方法
2019/05/07 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
python自动下载图片的方法示例
2020/03/25 Python
Python txt文件如何转换成字典
2020/11/03 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
资产评估专业大学生求职信
2013/09/29 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
物流专业自荐信
2014/05/23 职场文书
Golang 入门 之url 包
2022/05/04 Golang
Java线程的6种状态与生命周期
2022/05/11 Java/Android
spring 项目实现限流方法示例
2022/07/15 Java/Android