ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS数据类型判断

2021-06-29 20:00:36  阅读:153  来源: 互联网

标签:判断 Object 数据类型 object JS typeof new 属性


js数据类型有哪些
基本数据类型(值类型): Number、String、Boolean、Undefined、Null、Symbol(es6新增独一无二的值) 和 BigInt(es10新增);

引用数据类型: Object (Object,Array, function,Date,RegExp。)

JS数据类型判断

五种方法

typeof、instanceof、constructor、Object.prototype.toString.call()、jquery.type()

1.typeof

typeof一般检测基本数据类型中:Number,String,Boolean,undefined 以及引用数据类型中Function ,分别返回对应的数据类型小写字符。
另:用typeof检测构造函数创建的Number,String,Boolean都返回object
typeof不可以检测基本数据类型中:null 和引用数据类型中的:Array,Object,Date,RegExp。他们都会返回小写的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 new Date(), //"object"
    typeof /^[a-zA-Z]{5,20}$/, //"object"
    typeof new Error() //"object"
    typeof new String('abc'),// 'string'
    typeof new Boolean(true),//'boolean'
);

2,instanceof

它用来判断这个构造函数的原型是否在给定对象的原型链上。

instanceof是不可以检测基本数据类型中:Number,String,Boolean。(因为js中没有这种全局类型)但是构造函数创建的值可以


          let num =new Number(1);
 
          let str =  new String('abc');
 
          let bool = new Boolean(true);
 
          //这样定义才能检测出.
 
          let num = 1;
 
          let str = 'abc';
 
          let bool = true;
 
          //这样定义是检测不出来的
 

3,constructor

constructor是prototype对象上的属性,指向构造函数。根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,

因此可以使用某个对象上的constructor属性来判断是否是某个类型

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

4 . 使用Object.prototype.toString.call()检测对象类型

定义:首先,取得对象的一个内部属性[[Class]],然后依据这个属性,返回一个类似于”[object Array]“的字符串作为结果(看过ECMA标准的应该都知道,[[]]用来表示语言内部用到的、外部不可直接访问的属性,称为“内部属性”)。利用这个方法,再配合call,我们可以取得任何对象的内部属性[[Class]],然后把类型检测转化为字符串比较,以达到我们的目的。

5,jquery.type()

typeOf能判断出一个变量的类型,但是只能判断出number,string,function,boolean,undefined,null和其他对象类型返回结果都为object.

instanceof能判断出一个对象是否是另一个类的实例。

Object.prototype.toString.call能判断出所有变量的类型,返回值为[Object ***]。

标签:判断,Object,数据类型,object,JS,typeof,new,属性
来源: https://blog.csdn.net/weixin_57980164/article/details/118342296

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有