类的继承 super :关键字
- 子类通过 extends 关键字来继承父类的所有属性和方法
- 子类必须在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>