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,就可以打印出来对应的结果

posted @ 2022-02-23 15:01  一封未寄出的信  阅读(202)  评论(0编辑  收藏  举报