了解js的都知道, 有个typeof 用来判断各种数据类型,有两种写法:typeof xxx ,typeof(xxx)

如下实例:

typeof 2 输出 number
typeof null 输出 object

typeof {} 输出 object

typeof [] 输出 object

typeof (function(){}) 输出 function

typeof undefined 输出 undefined

typeof '222' 输出 string

typeof true 输出 boolean

这里面包含了js里面的五种数据类型 number string boolean undefined object和函数类型 function

看到这里你肯定会问了:我怎么去区分对象,数组和null呢?

接下来我们就用到另外一个利器:Object.prototype.toString.call

这是对象的一个原生原型扩展函数,用来更精确的区分数据类型。

我们来试试这个玩儿意儿:

var gettype=Object.prototype.toString

gettype.call('aaaa') 输出 [object String]

gettype.call(2222) 输出 [object Number]

gettype.call(true) 输出 [object Boolean]

gettype.call(undefined) 输出 [object Undefined]

gettype.call(null) 输出 [object Null]

gettype.call({}) 输出 [object Object]

gettype.call([]) 输出 [object Array]
gettype.call(function(){}) 输出 [object Function]

看到这里,刚才的问题我们解决了。

constructor也能判断数据类型:

如:''.constructor==String

[].constructor==Array

var obj= new Object() obj.constructor==Object

其实js 里面还有好多类型判断 [object HTMLDivElement] div 对象 , [object HTMLBodyElement] body 对象 ,[object Document](IE)或者 [object HTMLDocument](firefox,google) ......各种dom节点的判断,这些东西在我们写插件的时候都会用到。

可以封装的方法如下 :

var gettype=Object.prototype.toString

var utility={

isObj:function(o){

return gettype.call(o)=="[object Object]";

},

isArray:function(o){

return gettype.call(o)=="[object Array]";

},

isNULL:function(o){

return gettype.call(o)=="[object Null]";

},

isDocument:function(){

return gettype.call(o)=="[object Document]"|| [object HTMLDocument];

}

........

}

这个获取类型的方法有个简单的写法:

var Type = (function() {
var type = {};
var typeArr = ['String', 'Object', 'Number', 'Array','Undefined', 'Function', 'Null', 'Symbol'];
for (var i = 0; i < typeArr.length; i++) {
(function(name) {
type['Is' + name] = function(obj) {
return Object.prototype.toString.call(obj) == '[object ' + name + ']';
}
})(typeArr[i]);
}
return type;
})();

  

调用方法:Type.IsFunction(function() {}) Type.IsObject({})。。。。。
Type.Is.....

来源:http://www.cnblogs.com/a546558309/p/3608194.html

转载于:https://juejin.im/post/5bf76fb8e51d4546db6be66c

js 判断各种数据类型相关推荐

  1. js 判断数据类型的几种方法

    粗体判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法 ...

  2. 判断js中的数据类型的方法

    在 判断js中的数据类型 我们通常会使用typeOf()方法,        typeof   2         输出   number       typeof   null       输出   ...

  3. [转载]如何判断js中的数据类型

    原文地址:如何判断js中的数据类型作者:最初的你 如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个 ...

  4. js判断数据类型(如数组)及数组操作函数

    在ES5的时候,js数据类型有6种:Number.String.Boolean.undefined.object.Null. 注:https://blog.csdn.net/u013592575/ar ...

  5. js判断数据类型常用的四种方法

    首先说一下js中的数据类型 基本数据类型:String.Number.Boolean.null.undefined.Symbol 引用数据类型:Object  1.typeof const a1 = ...

  6. JS判断数据类型以及数据过滤空值方法

    JS判断数据类型以及数据过滤空值方法 在我们的项目开发中,经常需要对一个传输中的数据进行滤空处理,过滤 null.undefined.''.[].{}等,还要对字符串进行去除两端的空格操作.为此,我写 ...

  7. js判断数据类型常用的方法

    目录 基本数据类型有哪些 常见的判断js数据类型的方法有如下几种 一.typeof 二.instance of 三. 使用constructor判断数据类型 四.对象原型链判断方法:Object.pr ...

  8. js判断数据类型常用的6种方法

    js判断数据类型常用的方法,不论在开发中开始在面试中,都是经常遇到的问题,尤其是在面试时,当面试官问及js判断数据类型的方法时,回答的越多,说明掌握的广度跟深度越多,感觉自己逼格也越高.废话不多说了, ...

  9. 分享一波很全的 JS 判断数据类型的方法

    分享一波很全的 JS 判断数据类型的方法 干货满满,很常用也很有用的一波方法整理,分享给需要的小伙伴们. 偷偷说一句,小肉包之前整理的没有这么简洁和全面,后面小肉包的男朋友又帮忙加工润色了一下,现在看 ...

最新文章

  1. sprintf函数做什么用?
  2. 用命令行工具创建 NuGet 程序包
  3. 假期充电!20世纪最优秀的物理学家费曼是如何生活、学习和思考的?
  4. (1)搞一搞 seata 之 基础环境搭建
  5. 从零开始成为一名开源程序员,其实只需要九步!
  6. springboot获取URL请求参数的几种方法
  7. python一年365天、初始水平值_2020年11月7日,20201107
  8. React的工作原理,为什么我直接从JSBin copy到本地的代码无法执行
  9. sign check fail: check Sign and Data Fail!-错误处理
  10. linux tar 使用
  11. U盘格式化了怎样恢复还原(必学技能)
  12. 织梦DedeCms网站更换域名后文章图片路径批量修改
  13. 计算机高级筛选操作步骤,【EXCLE表格中根据特定的条件进行高级筛选】计算机excel高级筛选步骤...
  14. 华为2022年度伙伴奖项正式揭晓!恒驰信息荣获华为云GrowCloud优秀解决方案提供商奖
  15. 超融合服务器硬盘4T 6T 8T从性能上到底有什么区别
  16. ros2 for 思岚AI雷达
  17. 信息系统项目管理师2019年下半年上午试题解析(三)
  18. 在/tmp 目录创建临时文件
  19. 【信息量判别块:语义监督:GAN:IVIF】
  20. 北邮网络安全-防火墙

热门文章

  1. Matlab中计算程序运行时间的三种方法,以及获取系统时间的方法
  2. 2018-2019-1 20189208《Linux内核原理与分析》第九周作业
  3. 【luogu】P1772物流运输(最短路+DP)
  4. 【bzoj 3531】 [Sdoi2014]旅行(树链剖分+树套树)
  5. WIZnet推出串口转以太网模块WIZ550S2E
  6. 【分享】小工具大智慧之Sql执行工具
  7. 研究生阅读管理文献---我阅读科研文献的一些做法
  8. 中海达数据怎么转rinex_Ashtech格式转换RINEX
  9. python以读写方式打开文件_python 文件读写with open模式r,r+,w,w+,a,a+的区别
  10. 电脑主板跳线_电脑主板跳线连接图