博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js中的数据类型检测
阅读量:4972 次
发布时间:2019-06-12

本文共 1298 字,大约阅读时间需要 4 分钟。

js中的数据类型检测常用的方法是使用typeof,typeof运算符会返回下列6中类型之一:

  • "number"
  • "string"
  • "boolean"
  • "object"
  • "function"
  • "undefined"

例如:

1  2  3  4     
5 Document 6 22 23 24 25 26

结果如下:

从结果中可以看出使用typeof检测null值时,返回的是object,而不是null。这样其实并不能真正的检测出数据类型。可以向下面定义一个方法检测出null类型。

1  2  3  4     
5 Document 6 25 26 27 28 29

 得到的结果如下:

 

而对于复杂的数据类型,比如对象或者数组,可以使用constructor属性。constructor属性可以判断绝大部分数据的类型,但是对undefined和null类型并不适用,因为javascript解释器会抛出异常。

数值直面量也不能使用constructor属性,可以加上一个小括号,将数值转化为对象,例如:

 alert((1).constructor); 

 

对于内置对象,使用toString()方法检测对象类型时最安全、最准确的。调用toString()方法把对象转化为字符串,然后通过检测字符串中是否包含数组所特有的标志字符可以确定对象的类型。

例如:

1 function typeof(o){ 2       var _toString=Object.prototype.toString; 3       var _type={ 4                  "undefined":"undefined", 5                  "number":"number", 6                  "boolean":"boolean", 7                  "string":"string", 8                  "[object Function]":"function", 9                  "[object Array]":"array",10                  "[object RegExp]":"regexp",11                  "[object Date]":"date",12                  "[object Erroe]":"error"13         }14         return _type[typeof o]||_type[_toString.call(o)]||(o?"object":"null");15 }16

 对于非内置对象,只能使用constructor属性和instanceof运算符来实现。

转载于:https://www.cnblogs.com/yangxiaoguai132/p/5223701.html

你可能感兴趣的文章
搜索好题2
查看>>
3 Selenium Python 数据库及文件
查看>>
Compounding绑定属性
查看>>
【转】jsp 和 servlet的联系和区别
查看>>
mvc4 用NPOI导出Excel
查看>>
格雷码与二进制码互相转换
查看>>
数码管的封装实验 --- verilog
查看>>
unity, 只发射一个粒子的粒子系统
查看>>
第十六章----面向对象(宠物乱斗之主面板)
查看>>
HDU 1564 Play a game
查看>>
POJ1308(Is It A Tree?)
查看>>
web调试利器_fiddler
查看>>
深入浅出“跨视图粒度计算”--3、EXCLUDE表达式
查看>>
python写一个通讯录
查看>>
以Apache模块的方式编译安装php-5.5.4
查看>>
转载:使用命令行启动VirtualBox虚拟机
查看>>
内置函数
查看>>
IE hover 之后子元素不消失的解决办法
查看>>
Wamp环境搭建常见错误问题解决
查看>>
android:layout_weight
查看>>