js数据类型的判断

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 ***]。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值