js的继承
ES6 的继承:子 extends 父,哪里继承哪里写一个super()
代码:
class Parent{
constructor(){
this.age=18
}
}
class Child extends Parent{ //子继承父
constructor(){
super() //加上super(),要不然会报错
this.age=18
}
}
let o = new Child()
原型链的继承:将子类的原型指向父类的实例即可
缺点:
1.创建子类实例时,无法向父类构造函数传参
2.父类的所有引用属性会被所有子类共享,更改一个子类的引用属性,其他子类也会受影响
代码:
function Parent(){
this.age=20
}
function Child(){
this.name="王五"
}
Child.prototype=new Parent() //给子的原型上new
let o = new Child()
优点:能实现属性的继承,也可以在子类型创建实例时为父类型传递参数。
缺点:无法继承父类原型上的属性与方法
代码:
function Parent(){
this.age=20
}
function Child(){
this.name="王五"
Parent.call(this)
}
let o = new Child()
组合式继承:就是结合构造函数继承和原型链继承实现的
核心:使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承
function Parent(){
this.age=20
}
function Child(){
this.name="王五"
Parent.call(this)
}
Child.prototype=new Parent()
let o = new Child()

浙公网安备 33010602011771号