扩展typeof来判断js变量的类型
我写了一个自定义函数来做这个事,判断的比较全面了, 存为typeof_extend.js。
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对象,各浏览器是基本一致的
console.log(varType()); //undefined
console.log(varType(100)); //number
console.log(varType({})); //Object
console.log(varType([])); //Array
console.log(varType(/ /)); //RegExp
console.log(varType(new Date())); //Date
console.log(varType(Date)); //function
console.log(varType(Object)); //function
console.log(varType(RegExp)); //function //对于DOM对象,各浏览器可能会有不同值
console.log(varType(window)); //IE:HTMLWindow2 FF:Window
console.log(varType(document)); //IE:HTMLDocument FF:HTMLDocument
console.log(varType(document.body)); //IE:HTMLBody FF:HTMLBodyElement
console.log(varType(Option)); //IE:Object FF:function
console.log(varType(Image)); //IE:Object FF:function
console.log(varType(navigator)); //IE:DispHTMLNavigator FF:Navigator //以下几个只适用于IE,其他内核浏览器不支持
if(!!window.VBArray){ console.log(varType(ActiveXObject)); //IE:function console.log(varType(Enumerator)); //IE:function console.log(varType(new ActiveXObject("Scripting.Dictionary"))); //IE:Dictionary console.log(varType(new Enumerator())); //IE:Enumerator
}
将其放到html中,名为,代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>cookie生成测试</title>
</head>
<body>
<script type='text/javascript' src='http://www.abc.com/js/typeof_extend.js'></script>
</body>
</html>
在chrome 39中测试如下:
在IE 11中测试如下:
参考文献
[1].http://shenjc2008.iteye.com/blog/1009366
扩展typeof来判断js变量的类型相关推荐
- 如何查看某个js 变量 runtime 类型
Created by Jerry Wang, last modified on Sep 22, 2015 例如想查看var tab runtime时的object type, 一种办法是根据byId传 ...
- 前端:JS/17/前篇总结(JS程序的基本语法,变量),数据类型-变量的类型(数值型,字符型,布尔型,未定义型,空型),数据类型转换,typeof()判断数据类型,从字符串提取整数或浮点数的函数
JS程序的基本语法 1,JS是区分大小写的,如:Name和name是不同的: 2,JS中每一条语句,一般以英文的分号(;)结束,在Java中是严格地一定要加上分号,不然会报错:但在JavaScript ...
- JS进阶 你真的掌握变量和类型了吗?
Table of Contents 简言 导读 一.JavaScript数据类型 原始类型 对象类型 二.为什么区分原始类型和对象类型 2.1 不可变性 栈内存: 2.2 引用类型 堆内存: 2.3 ...
- 分类型变量预测连续型变量_「JS进阶」你真的掌握变量和类型了吗
文章转载自公众号 code秘密花园 , 作者 ConardLi 一起看下面几个问题: JavaScript中的变量在内存中的具体存储形式是什么? 0.1+0.2为什么不等于0.3?发生小数计算错误的具 ...
- java 获取js变量类型_JavaScript 的数据类型及其检测
原标题:JavaScript 的数据类型及其检测 作者:浪里行舟 Java 有几种类型的值? Java 有两种数据类型,分别是基本数据类型和引用数据类型.其中基本数据类型包括 Undefined.Nu ...
- 如何判断JS中变量的类型
前言 判断JS类型,有以下几种方法: typeof instanceof Object.property.toString.call JS中的数据类型 JS的基本类型共有七种: number stri ...
- 1.js变量、作⽤域和引⽤类型,js制作页。
一.变量 javascript的变量与其它语⾔(强类型)的变量是有很⼤的区别的.JavaScript 变量松散类型的本质, var result; result = 1; alert(typeof r ...
- HTML学习9 JS 数字和字符串 变量的类型 运算符和表达式 布尔值和关系运算符、逻辑运算符
JavaScript简介 1.1 JavaScript的用途 JavaScript用来制作web页面交互效果,提升用户体验. 简单列出几个JavaScript能够制作的页面效果,它能干什么: 轮播图 ...
- Js变量如何转换为字符串类型?
Js变量转为字符串类型的方法有以下3种,大家可以根据场景选择适合的方法,下面我们一一介绍. 1. toString()用法 语法: 变量 = 变量.toString(); 案例: <script ...
最新文章
- 嵌入式Linux入门经典笔记
- 运维必知的23个经验教训,值得收藏!
- .Net 中接口应用的知识点(排序)
- win7配置iis 出现:HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容...
- 大数据分析对企业有什么影响
- centos mysql
- HDFS的命令行使用【常用 hdfs 命令】
- 神经网络学习小记录59——Pytorch搭建常见分类网络平台(VGG16、MobileNetV2、ResNet50)
- Android基站定位源代码
- Multisim仿真实验——小信号调谐放大器
- 计算机公式上下左右,十五个常用函数公式,值得收藏
- win10怎么用计算机二进制,教你如何使用Win10计算器进行进制转换?
- 科大讯飞与IBM组队人工智能蓝蓝CP
- Blend Shape Pose Animation
- 图形库LVGL v8.2版本移植
- greendao的使用
- 如何直观的理解机器学习过拟合和欠拟合?
- 微信小程序-如何申请百度开放平台的密钥
- 算法的数值稳定性实验报告用c语言,数值计算实验教案.doc
- openlayers自定义控件 ---仿百度地图指南针