JavaScript中的数据类型检测方法

本文比较了JavaScript中的typeof、instanceof、constructor和Object.prototype.toString四种数据类型检测方法,探讨其底层原理、优缺点以及适用场景,强调了它们在处理复杂对象和基本数据类型的区别。
摘要由CSDN通过智能技术生成

typeof

底层原理

        直接在计算机底层基于数据类型的值(二进制)进行检测

tyepof(null) =>  "object"  

        对象存储在计算机中,都是以000开始的二进制存储,null也是,所以检测出来的结果是对象

typeof 普通对象/数组对象/正则对象/日期对象  "object"

弊端

        只能检测基本对象,不能检测复杂对象。

instanceof

检测当前实例是否属于这个类的

底层机制

只要当前类出现在实例的原型链上,结果都是true

弊端

由于我们可以肆意的修改原型的指向,所以检测出来的结果是不准的

不能检测基本数据类型

会顺着原型链查找

 constructor

用法和instanceof 差不多

与instanceof的区别

可以检测基本数据类型

不会顺着原型链查找

弊端

由于我们可以随意更改constructor,所以也不准

Object.prototype.toString.call( ) 

标准检测数据类型的办法:Object.prototype.toString不是转换为字符串,是返回当前实例所属类的信息

支持检测全部类型

"[object Number/String/Boolean/Null/Undefined/Symbol/Object/Array/RegExp/Date/Function]"

弊端

使用方法复杂,频繁使用时过于繁琐 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值