ES6-类的继承

类的继承 super :关键字
  1. 子类通过 extends 关键字来继承父类的所有属性和方法
  2. 子类必须在constructor中调用super方法,否则新建实例会报错;

ES5的继承中,实质是先创造子类的实例对象this,然后再将父类的方法/属性添加到this上面。
ES6的继承中,实质是先创造父类的实例对象this, 然后再将子类的方法/属性添加上
必须先通过父类的构造函数完成塑造(this对象–实例对象),然后再对其加工,加上子类自身的属性和方法。
如果不调用super方法,子类就得不到this对象

<script>
        //super :关键字
        {
            //父类
            class Person{
                constructor(name){
                    this.name = name;
                    this.hoppy = "不知到";
                }
                talk(){
                    console.log("我是一个老板,来自深山老林")
                }

            }
            let person = new Person()

            class Student extends Person{
                //super也可以写在外面
                constructor(name,age){  //继承过程下面实参传进来 小屁孩子 形参name接收
                    super(name);      // name传给super(name)里 super接收到父类里面的this对象
                                      // 然后把父类this对象改成自己的(Student)this对象,这时就你用了
                    this.age = age;
                }
                say(){
                    console.log(`我的名字叫${this.name},爱好是${this.hoppy}`)
                                    //子类如果有hoppy那就先用,没有就去父级找
                }
            }

            let student = new Student("小屁孩子",18);
            student.say();
            student.talk(); //子类也可以继承父类里原型的东西

        }
    </script>
发布了99 篇原创文章 · 获赞 26 · 访问量 7916

猜你喜欢

转载自blog.csdn.net/weixin_46146313/article/details/104239414
今日推荐