博客:
https://www.cnblogs.com/ranyonsue/p/11201730.html
视频:
https://www.bilibili.com/video/BV1iK4y1h76D/?spm_id_from=333.788.recommend_more_video.1
https://www.bilibili.com/video/BV1Ki4y1L7dY?from=search&seid=15593733464696966012
构造函数继承父类型的属性。
原型对象继承了父类型的方法。
1 父构造函数继承属性。
function Father(a,b){ this.uname= uname; this.age= age;}
function Son(a,b){ Father.call(this,a,b)} //1调用父构造函数,把父构造函数的this改为子构造函数的this,可以添加到里面
2
Father.prototype.money = function() { console.log(1000);}
Son.prototype = Father.prototype//修改子类的,父原型对象也会跟着一起,所以不行。
new Father的实例对象。
Son.prototype = new Father();
Son.prototype.exam() = function() {}
son的prototype的constructor直向 确实 Father,利用对象方式修改原型,需要指回来。
Son.prototype.constructor = Son;
1 属性: 构造函数继承。(this调用)
2 方法: 原型链继承(新实例的原型等于父类的实例)
3 组合继承(构造函数继承 和原型链继承)
4 原型式继承 (重点:用一个函数包装一个对象,然后返回这个函数的调用,这个函数就变成了个可以随意增添属性的实例或对象。object.create()就是这个原理。)
5 寄生式继承。(就是给原型式继承外面套了个壳子。)
6 寄生组合式继承(常用。)(在函数内返回对象然后调用)