JS中instanceof的实现

ps: 如果有任何问题可以评论留言,我看到后会及时解答,评论或关注,您的鼓励是我分享的最大动力
转载请注明出处:
https://blog.csdn.net/qq_40938301/article/details/107603644

我的前端开源项目JavaScriptGuide在维护中,内有前端重要的知识总结归纳,欢迎大家fork的参与以及star的鼓励:
https://github.com/Jackie-Hung/JavaScriptGuide

instanceof实现

概念:

instanceof 的功能是:判断一个实例是否是其父类型或祖先类型所生成的实例。
返回值为Boolean类型,truefalse
obj instanceof constructor

思路:

根据其功能,换言之即判断:
constructor.prototype是否在obj的原型链

故可得:
1、取constructor的原型(constructor.prototype)
2、在原型链上取obj的原型(obj = obj._ _ proto _
3、循环比较是否相等:
(1)相等,则是该类型的实例,返回true
(2)不想等,则继续在原型链往上找该实例的原型 obj = obj.
_ proto _ _
(3)找到原型链的尽头(obj === null),则不是该类型的实例,返回false

代码:
function instanceOf(obj,constructor){
	//取constructor的原型
	let prototype = constructor.prototype;
	//取obj的原型
	obj = obj.__proto__;
	while(true){
		if(obj === prototype)
			return true;
		obj = obj.__proto__;
		if(obj === null)
			return false;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值