全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

先举几个例子:

var a = "iamstring.";
var b = 222;
var c= [1,2,3];
var d = new Date();
var e = function(){alert(111);};
var f = function(){this.name="22";};  

1、最常见的判断方法:typeof

alert(typeof a)  ------------> string
alert(typeof b)  ------------> number
alert(typeof c)  ------------> object
alert(typeof d)  ------------> object
alert(typeof e)  ------------> function
alert(typeof f)  ------------> function

其中typeof返回的类型都是字符串形式,需注意,例如:

alert(typeof a == "string") -------------> true
alert(typeof a == String) ---------------> false

另外typeof 可以判断function的类型;在判断除Object类型的对象时比较方便。 

2、判断已知对象类型的方法: instanceof

alert(c instanceof Array) ---------------> true
alert(d instanceof Date)
alert(f instanceof Function) ------------> true
alert(f instanceof function) ------------> false

注意:instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。   

3、根据对象的constructor判断: constructor

alert(c.constructor === Array) ----------> true
alert(d.constructor === Date) -----------> true
alert(e.constructor === Function) -------> true

注意: constructor 在类继承时会出错

eg:

   function A(){};
   function B(){};
   A.prototype = new B(); //A继承自B
   var aObj = new A();
   alert(aobj.constructor === B) -----------> true;
   alert(aobj.constructor === A) -----------> false;

而instanceof方法不会出现该问题,对象直接继承和间接继承的都会报true:

   alert(aobj instanceof B) ----------------> true;
   alert(aobj instanceof B) ----------------> true;

言归正传,解决construtor的问题通常是让对象的constructor手动指向自己:

   aobj.constructor = A; //将自己的类赋值给对象的constructor属性
   alert(aobj.constructor === A) -----------> true;
   alert(aobj.constructor === B) -----------> false; //基类不会报true了;

4、通用但很繁琐的方法: prototype

alert(Object.prototype.toString.call(a) === ‘[object String]') -------> true;
alert(Object.prototype.toString.call(b) === ‘[object Number]') -------> true;
alert(Object.prototype.toString.call(c) === ‘[object Array]') -------> true;
alert(Object.prototype.toString.call(d) === ‘[object Date]') -------> true;
alert(Object.prototype.toString.call(e) === ‘[object Function]') -------> true;
alert(Object.prototype.toString.call(f) === ‘[object Function]') -------> true;

大小写不能写错,比较麻烦,但胜在通用。

5、无敌万能的方法:jquery.type()

如果对象是undefined或null,则返回相应的“undefined”或“null”。

jQuery.type( undefined ) === "undefined"
jQuery.type() === "undefined"
jQuery.type( window.notDefined ) === "undefined"
jQuery.type( null ) === "null"

如果对象有一个内部的[[Class]]和一个浏览器的内置对象的 [[Class]] 相同,我们返回相应的 [[Class]] 名字。 (有关此技术的更多细节。 )

jQuery.type( true ) === "boolean"
jQuery.type( 3 ) === "number"
jQuery.type( "test" ) === "string"
jQuery.type( function(){} ) === "function"
jQuery.type( [] ) === "array"
jQuery.type( new Date() ) === "date"
jQuery.type( new Error() ) === "error" // as of jQuery 1.9
jQuery.type( /test/ ) === "regexp"

其他一切都将返回它的类型“object”。

通常情况下用typeof 判断就可以了,遇到预知Object类型的情况可以选用instanceof或constructor方法,实在没辙就使用$.type()方法。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 判断  # 数据类型  # js 判断各种数据类型的简单方法(推荐)  # js的各种数据类型判断的介绍  # JS中的四种数据类型判断方法  # 利用JS判断数据类型的四种方法  # JavaScript中判断数据类型的方法总结  # JavaScript 判断数据类型的4种方法  # js和jquery判断数据类型的4种方法总结  # JS数据类型判断的几种常用方法  # 在JS中判断数据类型的方式有哪些简单示例  # 会报  # 自己的  # 都是  # 几种方法  # 几个  # 一切都  # 言归正传  # 最常见  # 就可以  # 但很  # 有一个  # 需注意  # 情况下  # alert  # function  # strong  # Date  # number  # object  # brush 


相关文章: 北京专业网站制作设计师招聘,北京白云观官方网站?  css网站制作参考文献有哪些,易聊怎么注册?  建站主机数据库如何配置才能提升网站性能?  如何在七牛云存储上搭建网站并设置自定义域名?  大连 网站制作,大连天途有线官网?  建站之星安装路径如何正确选择及配置?  如何配置IIS站点权限与局域网访问?  c# 在高并发场景下,委托和接口调用的性能对比  建站与域名管理如何高效结合?  建站主机如何安装配置?新手必看操作指南  已有域名如何免费搭建网站?  如何访问已购建站主机并解决登录问题?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何选择网络建站服务器?高效建站必看指南  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  音响网站制作视频教程,隆霸音响官方网站?  智能起名网站制作软件有哪些,制作logo的软件?  如何通过服务器快速搭建网站?完整步骤解析  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何快速搭建FTP站点实现文件共享?  如何挑选高效建站主机与优质域名?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何配置FTP站点权限与安全设置?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何快速生成专业多端适配建站电话?  实例解析angularjs的filter过滤器  建站之星如何实现网站加密操作?  网站设计制作企业有哪些,抖音官网主页怎么设置?  建站之星免费模板:自助建站系统与智能响应式一键生成  如何制作算命网站,怎么注册算命网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何用西部建站助手快速创建专业网站?  小型网站建站如何选择虚拟主机?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  ,网页ppt怎么弄成自己的ppt?  如何选择高效便捷的WAP商城建站系统?  建站之星会员如何解锁更多建站功能?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何在万网自助建站中设置域名及备案?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何选择适配移动端的WAP自助建站平台?  制作网站公司那家好,网络公司是做什么的?  建站主机CVM配置优化、SEO策略与性能提升指南  如何构建满足综合性能需求的优质建站方案?  建站之星展会模版如何一键下载生成?  如何用美橙互联一键搭建多站合一网站?  如何基于云服务器快速搭建网站及云盘系统?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。