目录
原型和原型链
原型
在理解之前,明白一个前提,js也是有类的,也可以定义方法和构造函数
隐式原型:对象的_proto_属性(里面有类定义的方法,且这个属性每个对象都有)
显式原型:Student.prototype
其中,Student.prototype和student._proto_完全相等
原型链
理解之前,有一个前提,Student继承自Person,且Person有一个方法:drink
访问student对象的属性或方法,例如drink,先从自身去找(类似java成员变量与原型同级),如果找不到就去自己的原型上找,如果还找不到,就会往原型的原型上去找(找到drink),这样就会有一个链式的结构,叫原型链。请将下图的teacher换成student顺逻辑:
ps:
- 其实最终会到Object类(有点像java),这个类有一个hasOwnProperty方法判断属性或方法(应该只有属性,因为方法在原型中)是不是本身拥有的(不是本身拥有就是在原型中),如果是,返回true,否则false
- Object的_proto_再往上没有了嘛,所以是null