ES6:继承(extends)算法(super)
ES6:继承(extends)算法(super)
super调用构造函数
eg:
class Father{
constructor(x,y){
this.x = x;
this.y = y;
}
sum(){
console.log(this.x+this.y);
}
}
class Son extends Father{
constructor(x,y){
super(x,y)
}
}
var son = new Son(1,2);
son.sum();
目的:子级Son 调用父级 Father的 sum()函数的计算方法 会用到extends(继承),super(算法)两个关键字
解析:class Father 是定义一个父级类,类中包含两个函数,一个是构造函数constructor 还有一个是sum的计算函数,class Son extends Father {} 是子级继承父级中的所有方法,Son是子,Father是父,但是在父级中有一个计算的方法sum ,涉及到了计算,所以子级想要继承父级的时候是需要使用super的,因为不使用super在最终的显示中会报错 must call supert constructor inderived class ... (意思为,需要使用super函数,即为在子级中的constructor中使用super来连接父级中的constructor,即为super()函数中传递的形参,也可以用在父级中的sonstructor中了),因为使用了extends继承父级的中的所有方法,也就是说用了父级的计算方式sum,表示就可以进行计算this.x+this.y了,在子级继承父级的时候使用constructor后,就可以进行运算,但是需要在里面加上super()来进行子级沟通父级,从而把把声明的函数son传递的实参,传递给子级继承父级中的constructor ,也就是把Son(1,2)中的1,2传递给class Son extends Father { constructor(x,y)},这个时候的x=1 ,y=2,然后使用super 进行沟通父级,故 super(x,y)则为 super(1,2),同时class 定义的父类Father 中的构造函数constructor(x,y)则为constructor(1,2),这样就把值传递给了父级,从而就可以进行计算,在最后使用子级son来调用计算函数sum,就可以打印出来对应的结果