typeof和instanceof的区别

本文详细讲解了JavaScript中typeof用于检测数据类型的方法,以及instanceof用于判断对象关联性的原理。通过实例演示了如何判断基本类型和复杂类型,并揭示了Object与Function原型链的关系。
摘要由CSDN通过智能技术生成

typeof检测数据类型

检测数据类型,返回一个小写字母的类型字符串
简单数据类型:Undefined/null/boolean/Number/String
复杂数据类型:Object

instanceof检测对象之间的关联性

例子和实例,instanceof 左边一定是引用类型值,其实 instanceof 主要的实现原理就是只要右边变量的 prototype 在左边变量的原型链上即可。因此,instanceof 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 prototype,如果查找失败,则会返回 false,告诉我们左边变量并非是右边变量的实例。
在这里插入图片描述
Object instanceof Object //true
Function instanceof Function //true
Function instanceof Object //true
Foo instanceof Foo //false
Foo instanceof Object //true
Foo instanceof Function //true

由图可知,Object 的 prototype 属性是 Object.prototype, 而由于 Object 本身是一个函数,由 Function 所创建,所以 Object.__proto__ 的值是 Function.prototype,而 Function.prototype 的 __proto__ 属性是 Object.prototype,所以我们可以判断出,Object instanceof Object 的结果是 true 。
leftValue = Object.__proto__ = Function.prototype;
rightValue = Object.prototype;
// 第一次判断
leftValue != rightValue
leftValue = Function.prototype.__proto__ = Object.prototype
// 第二次判断
leftValue === rightValue
// 返回 true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值