数据类型判断

本文详细介绍了JavaScript中六种数据类型判断方法:typeof、instanceof、constructor、Object.prototype.toString.call()、jquery.type()以及自定义函数。重点讲解了每种方法的适用场景和局限性,帮助开发者准确识别各种数据类型的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型判断

数据类型判断有以下几种方式

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

1.typeof() 基本数据类型中:对于基本数据类型的判断是没有问题的。
另:用typeof检测构造函数创建的Number,String,Boolean都返回的是对的数据类型
基本数据类型中:null,引用数据类型中的:Array,Object,Date,RegExp。不可以用typeof检测。都会返回小写的object
但是遇到引用数据类型是不起作用的。都会返回小写的object

示例

在这里插入图片描述

2.instanceof
除了使用typeof来判断,还可以使用instanceof。instanceof运算符需要指定一个构造函数,或者说指定一个特定的类型,它用来判断这个构造函数的原型是否在给定对象的原型链上(不考虑 null(空) 和 undefined(未定义))。

在这里插入图片描述

基本数据类型中:Number,String,Boolean。字面量值不可以用instanceof检测,但是构造函数创建的值可以,如下:

在这里插入图片描述

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

3.constructor(除了undefined和null之外,其他类型都可以通过constructor属性来判断类型。)
constructor用来判断数据的构造函数的类型,但是对于继承类型的数据有可能会出错,解决办法是将constructor重新赋值原来数据的构造函数类型 a.constructor=Array

如果输出一个类型的实例的constructor,就如下所示:

在这里插入图片描述

可以看到它指向了Number的构造函数,因此,可以使用num.constructor==Number来判断一个变量是不是Number类型的。

在这里插入图片描述

4.使用Object.prototype.toString.call()检测对象类型
可以通过toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,传递要检查的对象作为第一个参数,称为thisArg。

在这里插入图片描述

这样可以看到使用Object.prototype.toString.call()的方式来判断一个变量的类型是最准确的方法

5.无敌万能的方法:jquery.type()
如果对象是undefined或null,则返回相应的“undefined”或“null”

在这里插入图片描述

6.自己也可以封装一个获取变量准确类型的函数

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值