我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!
介绍
instanceof是用于判断对象是否属于另一个对象原型链上的属性或者方法,理解instanceof前提需要我们先学习有关原型链的知识,原型链是通过__proto__一层层链接的,通过该属性我们可以一层层的寻找是否存在相关的属性和方法。
码上掘金展示
原理介绍
function instanceofs(target,obj) {
//判断target是否属于obj
let prototypes = obj.prototype
while(target) {
if(target.__proto__===prototypes) return true
target = target.__proto__
}
return false
}
function Peo() {
}
let p = new Peo()
console.log(instanceofs(p,Peo))//true
- 首先我们需要判断属性o是否属于对象obj的原型链上
- 然后我们根据原型关系,判断对象obj.prototype是否===o.proro
- 如果存在,直接返回真。否则我们需要继续传递
- 让o等于 0.proto.也就是继续安装原型链寻找。
上面的实现过程基本完整的介绍了instanceof的过程,大家可以动手尝试练习掌握。其实原理还是比较清晰的。
总结
以上是我对instanceof原理的实现模拟过程,通过对其原理的介绍和模拟,更加深刻的学到了其本质思想,如果大家不是很清楚,可以去掘金看相关原型链的文章去学习,然后就会明白此处原型链的传递和链接问题了。 希望大家多多执行新人的我啊,谢谢谢谢了。