判断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小时内与您取得联系。