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;
	}
}

你可能感兴趣的:(JavaScript)