全网整合营销服务商

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

免费咨询热线: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 


相关文章: 常州自助建站工具推荐:低成本搭建与模板选择技巧  高端建站三要素:定制模板、企业官网与响应式设计优化  Bpmn 2.0的XML文件怎么画流程图  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  小程序网站制作需要准备什么资料,如何制作小程序?  如何通过智能用户系统一键生成高效建站方案?  如何快速辨别茅台真假?关键步骤解析  文字头像制作网站推荐软件,醒图能自动配文字吗?  *服务器网站为何频现安全漏洞?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  高端网站建设与定制开发一站式解决方案 中企动力  如何确保西部建站助手FTP传输的安全性?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何配置IIS站点权限与局域网访问?  ui设计制作网站有哪些,手机UI设计网址吗?  实例解析angularjs的filter过滤器  建站主机类型有哪些?如何正确选型  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Python lxml的etree和ElementTree有什么区别  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  建站之星云端配置指南:模板选择与SEO优化一键生成  简历在线制作网站免费,免费下载个人简历的网站是哪些?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  电商平台网站制作流程,电商网站如何制作?  建站之星如何助力企业快速打造五合一网站?  建站主机空间推荐 高性价比配置与快速部署方案解析  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何用狗爹虚拟主机快速搭建网站?  如何选择域名并搭建高效网站?  建站之星如何快速生成多端适配网站?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  如何正确下载安装西数主机建站助手?  如何在万网自助建站中设置域名及备案?  如何通过老薛主机一键快速建站?  购物网站制作公司有哪些,哪个购物网站比较好?  网站制作员失业,怎样查看自己网站的注册者?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  太原网站制作公司有哪些,网约车营运证查询官网?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  网站制作需要会哪些技术,建立一个网站要花费多少?  活动邀请函制作网站有哪些,活动邀请函文案?  如何用5美元大硬盘VPS安全高效搭建个人网站?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  XML的“混合内容”是什么 怎么用DTD或XSD定义 

您的项目需求

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