JS的继承

1.原型继承
核心:将父类的实例作为子类的原型(并不是把父类中的属性和方法克隆一份一模一样的给子类,而是让子类父类之间增加了原型链接)
特点:父类中私有的和公有的都继承到了子类原型上(子类公有的)
缺点:如果某一个构造函数实例对象修改了原型对象上的属性值和方法,则也会影响其他实例对象

2.借用构造继承,call继承 【不能继承原型链的方法】
核心:使用父类的构造函数来增强子类实例
特点:把父类私有的属性和方法,克隆一份一样的给子类私有的属性,Father执行的时候,把Father的中的this换成Son的实例,由于并不是new Father,所以Father.prototype上的属性无关
缺点:但没有原型,则复用无从谈起

3.混合模式继承: 原型继承+call继承
核心:通过调用父类构造,继承父类的属性并保留传参的优点,然后通过将父类实例作为子类原型,实现函数复用
特点:把父类私有的和公有的都变成了子类共有的,但是调用了【两次父类构造函数】,生成了两份实例
原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承

posted @ 2022-05-12 23:22  一土  阅读(38)  评论(0)    收藏  举报