js原型,原型链,instanceof

js原型,原型链,instanceof

一.类型判断 instanceof

上一篇文章讲的继承

(把上一篇文章的zby都看成xialuo)

js原型,原型链,instanceof
xialuo(zby)是Student 类的一个实例
Student继承People
People默认继承Object

若是不明白原理,可以继续往下看,其实与原型原型链有关

二.原型

js原型,原型链,instanceof
xialuo__proto__为隐式原型
Student. prototype 为显式原型

js原型,原型链,instanceof
原型关系
js原型,原型链,instanceof
基于原型的执行规则
js原型,原型链,instanceof
三.原型链

js原型,原型链,instanceof
js原型,原型链,instanceof
Student类继承People类,可以理解为student=new people,所以student的隐式原型指向people的显式原型

当执行代码xialuo.eat()时,会先在自己的方法里找,没有的话,顺着xialuo.__proto__指向Student.prototype,若还是没有则继续向上找,指向People.prototype。

-------------------------------------------------------------------------------------------
js原型,原型链,instanceof
sayHi不是xialuo自身的方法,是Student的方法,所以false
这时候就能理解为什么手写深拷贝的时候,要用到hasOwnProperty()

js原型,原型链,instanceof
js原型,原型链,instanceof
上理解上面图的条件下,重新理解instanceof

xialuo.instanceof.xxxx(student,people,object)

student,people,object的原型都在那摆着,xialuo的隐式原型向上寻找连接到了谁,xialuo与谁instanceof就为true。

-------------------------------------------------------------------------------------------

四.重要提示:
js原型,原型链,instanceof