实现继承首先要提供一个父类
一、原型链继承 利用原型让一个引用类型继承另一个引用类型的属性和方法。 优点:简单易于实现 缺点:无法向父函数传参,函数不能复用 二、借用构造函数 在子类型的构造函数中调用超类型构造函数。
优点:可以向父函数传参,解决了实例被共享的问题 缺点:无法复用,不能继承原型属性或方法 三、原型式继承 借助原型可以基于已有的对象创建新对象,同时还不必因此创建自定义类型。
优点:不限制调用方式 缺点:无法实现复用,实例会被共享 四、组合式继承 使用原型链实现对原型的属性和方法的继承,通过借用构造函数来实现对实例属性的继承,既通过在原型上定义方法来实现了函数复用,又保证了每个实例都有自己的属性。
优点:函数可以复用,可以向超类传递参数 缺点:调用了两次父类 五、寄生式继承 创建一个仅用于封装继承过程的函数, 该函数在内部已某种方式来增强对象,最后再像真地是它做了所有工作一 样返回对象。 缺点:不能函数复用故效率低下,实例会被共享 六、寄生组合式继承 即通过借用构造函数来继承属性,通过原型链的混成形式来继承方法,通过寄生的方式来修复组合式继承的不足,完美的实现继承 优点:只调用了一次父函数,效率更高。与其同时,原型链还能保持不变。因此寄生组合继承是引用类型最理性的继承范式。 七、es6继承 代码量少,易懂
//创建A类 class A{ constructor(){ //这里构造函数代码,new的时候自动执行 } 方法1(//A类的方法) 方法2(//A类的方法) } //创建B类并继承A类 class B extends A{ constructor(){ super()//这里表示父类 } } //最后实例化B var b=new B() b.方法1()