javascript完美判断类型
2019独角兽企业重金招聘Python工程师标准>>>
由于具体实现上的问题,在实际的项目应用中,typeof只有两个用途,就是检测一个元素是否为undefined,或者是否为function。
为何呢?
JavaScript Garden整理出来了如下表格:
Value function typeof
-------------------------------------
"foo" String string
new String("foo") String object
1.2 Number number
new Number(1.2) Number object
true Boolean boolean
new Boolean(true) Boolean object
new Date() Date object
new Error() Error object
[1,2,3] Array object
new Array(1, 2, 3) Array object
new Function("") Function function
/abc/g RegExp object
new RegExp("meow") RegExp object
{} Object object
new Object() Object object
所以我们一般用“鸭子类型”来做流程控制,好晚了,不多讲,去搜一下吧。
一定要区分这些东西?
Object.prototype.toString()
有一个妙用,如果我们以某个特别的对象为上下文来调用该函数,它会返回正确的类型。我们需要做的就是手动处理其返回的字符串,最终便能获得typeof应该返回的正确字符串。
可以用来区分:Boolean
, Number
, String
, Function
, Array
, Date
, RegExp
, Object
, Error
等等。
jQuery.type()
就是这样实现的。以下代码从jQuery源码中抽取出来,可以直接用。
var class2type = {} ;
"Boolean Number String Function Array Date RegExp Object Error".split(" ").forEach(function(e,i){class2type[ "[object " + e + "]" ] = e.toLowerCase();
}) ;
//当然为了兼容IE低版本,forEach需要一个polyfill,不作细谈了。
function _typeof(obj){if ( obj == null ){return String( obj );}return typeof obj === "object" || typeof obj === "function" ?class2type[ class2type.toString.call(obj) ] || "object" :typeof obj;
}
使用结果:
_typeof(new String())
->"string"
_typeof("123")
->"string"
_typeof(new RegExp())
->"regexp"
_typeof(null)
->"null"
转载于:https://my.oschina.net/wanjubang/blog/893162
javascript完美判断类型相关推荐
- 在javascript中判断类型
String 一个字符串始终是一个字符串,所以这一块是很容易.除非使用new(new String)调用,否则typeof将返回"object".所以也要包含那些可以使用的字符串i ...
- 理解JavaScript的原始类型
2019独角兽企业重金招聘Python工程师标准>>> JavaScript中的原始类型(primitive type)包括Undefined.Null.Number.Boolean ...
- php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧
在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...
- html 判断整数,javascript如何判断值是否为整数?
javascript如何判断一个值是否为整数?下面本篇文章就来给大家介绍一下使用javascript判断一个值是否为整数的方法,希望对大家有所帮助. 方法1:使用取余运算符判断 任何整数都会被1整除, ...
- html5判断text文本是数字,JavaScript常用判断写法大全
js验证表单大全,用JS控制表单提交,具体内容如下所示: 1. 长度限制 function test() { if(document.a.b.value.length>50) { alert(& ...
- java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别
JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...
- html中显示变量的数组,javascript如何判断变量是不是数组?
javascript如何判断变量是不是数组?下面本篇文章就来给大家介绍一下使用javascript判断变量是不是数组的几种方法,希望对大家有所帮助. 方案一:使用instanceof运算符 语法:变量 ...
- 方法的返回值类型是object_JavaScript中如何判断类型
1. typeof typeof (整数/小数/自然对数Math.LN2/正无穷大数Infinity) ===> numbertypeof NaN ===> number typeof ( ...
- html怎么判断字段,javascript怎么判断是否为字符串?
JavaScript变量能够保存多种数据类型:数值.字符串值.数组.对象等等,有时我们需要知道变量中所存储的数据类型,我们该如何判断数据类型呢? JavaScript中判断是否为字符串的方法: 判断是 ...
最新文章
- Sublime Text 3 常用插件以及安装方法(转)
- newinsets用法java_Java XYPlot.setInsets方法代碼示例
- linux中cp:overwrite提示的问题
- .NET Core RSA密钥的xml、pkcs1、pkcs8格式转换和JavaScript、Java等语言进行对接
- 教小学妹学算法:搜索算法解决迷宫问题
- .NET编程-----------------------Web.config配置文件详解
- linux空文件夹大小,[转载]linux 查看文件和文件夹大小
- error_reporting
- python - 乌龟吃鱼游戏
- “一个优秀程序员可抵五个普通程序员!”
- 【接箱子2.0】新手划过,dalao勿喷
- 安卓机更新系统会卡吗_都说安卓手机用一两年就卡到不行,但知道这3招,同样可以用很久...
- Elasticsearch:如何使用 Elasticsearch 和 Python 构建面部识别系统
- 2020年中国高粱行业发展现状分析,产品多元化发展「图」
- android屏幕唤醒函数,android学习笔记 按电源键屏幕唤醒和屏幕睡眠流程(从上层到kernel)...
- linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别的解决方法
- 浅谈PageRank算法
- PAT 1009. 说反话
- CentOS 如何更改SSH端口的方法
- jqurey相关知识点
热门文章
- R语言——双样本独立检验的快速分析立检验的快速分析
- OriginPro 2021安装教程(手把手式安装)
- Dev-C++安装教程附免费安装包资源
- 计算机网络 ip协议是,计算机网络知识:TCP/IP协议
- 机器人学习--扩展卡尔曼滤波算法用于机器人定位
- 机器人学习--粒子滤波及其在定位中的应用
- C语言 | C语言实现日历打印
- 卷的作用_悄悄告诉你蛋糕卷零失败的秘诀!
- static_cast、dynamic_cast、const_cast和reinterpret_cast总结
- mysql数据每日更新_[每日更新-MySQL]4.记录操作(数据操作)