JavaScript判断数据类型有几种方法及区别介绍


Posted in Javascript onSeptember 02, 2020

有五种数据判断类型方法typeof 、instanceof、constructor、Object.prototype.toString.call()、jquery.type()

一、typeof方法

typeof是个操作符,可以判断基本数据类型(返回的结果只能是number,string,boolean,null,symbol,function,object)
返回值分以下几种
对于基本类型。除了null值返回object以外,其他均返回正确的结果
对于引用值来说,除了function返回function类型,其他都返回object类型
例:

console.log(
 typeof 100, //"number"
 typeof 'abc', //"string"
 typeof false, //"boolean"
 typeof undefined, //"undefined"
 typeof null, //"object"
 typeof [1,2,3], //"object"
 typeof {a:1,b:2,c:3}, //"object"
 typeof function(){console.log('aaa');}, //"function"
 typeof new Date(), //"object"
 typeof /^[a-zA-Z]{5,20}$/, //"object"
 typeof new Error() //"object"
 typeof new Number(100), //'object'
 typeof new String('abc'),// 'string'
 typeof new Boolean(true),//'boolean'
)
 

二、instanceof方法

一般用来检测引用数据类型,表达式为:A instanceof B,判断A是否是B的实例,如果 A 是 B 的实例,则返回 true,否则返回 false,由构造类型判断出数据类型

console.log(
 100 instanceof Number, //false
 'dsfsf' instanceof String, //false
 false instanceof Boolean, //false
 undefined instanceof Object, //false
 null instanceof Object, //false
 [1,2,3] instanceof Array, //true
 {a:1,b:2,c:3} instanceof Object, //true
 function(){console.log('aaa');} instanceof Function, //true
 new Date() instanceof Date, //true
 /^[a-zA-Z]{5,20}$/ instanceof RegExp, //true
 new Error() instanceof Error //true
)
//注意: instanceof 后面一定要是对象类型,大小写不能写错,该方法试用一些条件选择或分支

还需要注意null和undefined都返回了false,这是因为它们的类型就是自己本身,并不是Object创建出来它们,所以返回了false。

三、constructor方法

constructor是prototype对象上的属性,指向构造函数,

var num = 123;
var str = 'abcdef';
var bool = true;
var arr = [1, 2, 3, 4];
var json = {name:'wenzi', age:25};
var func = function(){ console.log('this is function'); }
var und = undefined;
var nul = null;
var date = new Date();
var reg = /^[a-zA-Z]{5,20}$/;
var error= new Error();

function Person(){
 
}
var tom = new Person();

// undefined和null没有constructor属性
console.log(
 tom.constructor==Person,
 num.constructor==Number,
 str.constructor==String,
 bool.constructor==Boolean,
 arr.constructor==Array,
 json.constructor==Object,
 func.constructor==Function,
 date.constructor==Date,
 reg.constructor==RegExp,
 error.constructor==Error
);
//所有结果均为true

注意:除了undefined和null之外,其他类型都可以通过constructor属性来判断类型

方法四:Object.prototype.toString 方法

用来检测对象类型

var toString = Object.prototype.toString;

toString.call(123); //"[object Number]"
toString.call('abcdef'); //"[object String]"
toString.call(true); //"[object Boolean]"
toString.call([1, 2, 3, 4]); //"[object Array]"
toString.call({name:'wenzi', age:25}); //"[object Object]"
toString.call(function(){ console.log('this is function'); }); //"[object Function]"
toString.call(undefined); //"[object Undefined]"
toString.call(null); //"[object Null]"
toString.call(new Date()); //"[object Date]"
toString.call(/^[a-zA-Z]{5,20}$/); //"[object RegExp]"
toString.call(new Error()); //"[object Error]"

toString是Object原型对象上的一个方法,该方法默认返回其调用者的具体类型更严格的讲,是 toString运行时this指向的对象类型, 返回的类型格式为[object,xxx],xxx是具体的数据类型,其中包括:String,Number,Boolean,Undefined,Null,Function,Date,Array,RegExp,Error,HTMLDocument等等都可以通过这个方法获取到

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”。
6 . 自己也可以封装一个获取变量准确类型的函数

function gettype(obj) {
 var type = typeof obj;

 if (type !== 'object') {
 return type;
 }
 //如果不是object类型的数据,直接用typeof就能判断出来

 //如果是object类型数据,准确判断类型必须使用Object.prototype.toString.call(obj)的方式才能判断
 return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
}

总结

到此这篇关于JavaScript判断数据类型有几种方法及区别介绍的文章就介绍到这了,更多相关js 判断数据类型内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery判断单个复选框是否被选中的代码
Sep 03 Javascript
Javascript 中介者模式实例
Dec 16 Javascript
jquery实现按Enter键触发事件示例
Sep 10 Javascript
js数组转json并在后台对其解析具体实现
Nov 20 Javascript
js中同步与异步处理的方法和区别总结
Dec 25 Javascript
JavaScript调用ajax获取文本文件内容实现代码
Mar 28 Javascript
jQuery实现HTML5 placeholder效果实例
Dec 09 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
Oct 09 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
Nov 25 Javascript
jQuery实现火车票买票城市选择切换功能
Sep 15 jQuery
JavaScript实现一个带AI的井字棋游戏源码
May 21 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
jQuery中getJSON跨域原理的深入讲解
Sep 02 #jQuery
JavaScript交换变量常用4种方法解析
Sep 02 #Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 #Javascript
Jquery $.map使用方法实例详解
Sep 01 #jQuery
JQuery基于FormData异步提交数据文件
Sep 01 #jQuery
vue实现路由懒加载的3种方法示例
Sep 01 #Javascript
JQuery使用数组遍历跳出each循环
Sep 01 #jQuery
You might like
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
php创建类并调用的实例方法
2019/09/25 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
使用tensorflow实现线性回归
2018/09/08 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
Python 操作 MySQL数据库
2020/09/18 Python
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
中学老师的自我评价
2013/11/07 职场文书
商务主管岗位职责
2013/12/08 职场文书
车辆安全检查制度
2014/01/12 职场文书
人事专员的职责
2014/02/26 职场文书
React实现动效弹窗组件
2021/06/21 Javascript
OpenCV实现常见的四种图像几何变换
2022/04/01 Python