typeof 与 instanceof

本文探讨了JavaScript中的数据类型,包括number、string、boolean等,并重点解析了typeof操作符的原理,解释了为何typeof null === 'object'。同时,介绍了instanceof用于检查对象是否为特定构造函数的实例的机制。最后,指出了typeof无法检测Array类型,建议结合instanceof进行判断。
摘要由CSDN通过智能技术生成

在js中,存在以下几种数据类型:

1、number
2、string
3、boolean
4null
5、undefined
6、object
7、symbol
8、bigint

而typeof 只能得到以上几种类型,需要提一点的是

typeof null === 'object' // true
我觉得可以理解为原型链的顶端为null,这样其类型为object,也比较好理解吧。

需要注意的是,typeof得到的结果会经过toString(),所以会得到一个字符串。

typeof底层原理

js会用3位数记录每个数据的类型,其值分别为

onject:000
string:100
boolean:110
number: 1
null:所有机器码均为0
undefined:−2^30

所以typeof null === object,在进行typeof运算符时会查询该数得到数据类型。

instanceof

instanceof是用来该对象是不是该构造函数的实例对象。
instanceof底层原理

function myinstanceof (A,B){
	while(A.__proto__ ){
		if(A.__proto__ === B.prototype) return true
		A = A.__proto__
	}
	return false
}

其实instanceof是根据原型链查找才能判断出结果。

总结

我们可以看出typeof只能得到基本数据类型,不能得到Array类型,所以需要利用instanceof来判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值