开发者学堂课程【React 入门与实战:class-constructor 构造器中 super 函数的使用说明】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/585/detail/8099
class-constructor 构造器中 super 函数的使用说明
目录:
一、 super 函数的使用示例
一、super函数的使用示例
class Person{
constructor(name,age){
this.name = name
this.age = age
}
sayHello(){
console.log(
‘大家好’)
}
}
class American extends Person{
constructor(){
此时会报错,报错内容:missing super () call in constructor
忘记了使用 super 函数,在 constructor 构造函数中,必须优先调用 super 函数
修改为:
class American extends Person{
constructor(name,age){
//问题1:为什么一定要在 constructor 中调用 super
//答案:因为如果一个子类,通过 extends 关键字继承了父类。那么在子类 constructor 构造函数中,必须优先调用 super()
//问题2:super 是什么东西?
//答案:super 是一个函数,而且它是父类的构造器,子类中的 super 其实就是父类中,constructor 构造器的一个引用
//问题3:为什么调用了 super 之后,a1实例的 name 和 age 都变成了 undefined了?
//这是子类 美国人
//在 class 类中,可以使用 extends 关键字,实现子类继承父类
//语法:class 子类 extends 父类{}
class American extends Person{
constructor(){
}
const a1 = new American(
‘Jack’,20)
console.log(a1)
a1.sayHello()
super(name,age)
}
}
const a1 = new American(
‘Jack’,20)
console.log(a1)
a1.sayHello()
//这是子类 中国人
class Chinese extends Person{
constructor(name,age){
super(name,age)
}
}
const c1 = new American(
‘张三’,20)
console.log(c1)
c1.sayHello()
注意事项:
如果父类有空构造器,super()可以不写,但如果父类只有含参数的构造器,这个 super(...)一定要写,并且要对应父构造器的参数,否则就会报错!