写在前面:
这个理解,是我根据慕课网双越老师的课得出的理解,个人觉得双越老师讲的这门课非常适合对于基础不牢固的小伙伴们学习。
附上链接:coding.imooc.com/class/400.h…
原型:
先记住四句话
每一个对象都有一个隐示原型,__proto__。
每个class都有显示原型prototype。
每个实例的__proto__指向通过new Class创建的prototype。
默认javascript会将所有的对象最顶级(开山祖师)设置为Object。
var a = {age:20}实际上的效果就是这样的

原型链:
解释原型链就需要继承来体现了
class People{
constructor(name,number){
this.name = name;
this.number = number;
}
eat(){
console.log(`${this.name}吃。。。。。`)
}
}
class Student extends People{
constructor(name,number){
super(name);//这里直接继承父类People的name
this.number = number;
}
study(){
console.log(`${this.name}学习`);
}
}
let xiaoming = new Student('xiaoming',12312312);
上面的代码意思是,创建了一个People的类,再创建一个Student的类继承自People,创建xiaoming变量,赋值为一个new Student的实例。
name当我们调用xiaoming.eat()的时候他就会先在自身找,自身找不到就向自身的__proto__也就是他父级的People.prototype查找,找到就调用,找不到就继续向上找,直到找到Object.__proto__就返回is not a function
图解

分享
一句话
找准知识体系,刻意训练,及时反馈。
一个办法
如果你觉得这个问题很难,就在心里对自己说,解决这个问题就像是在心里写出上帝这两个字一样简单。多暗示几次就没那么难了。非常有效!!!