作者:昀尧约_146 | 来源:互联网 | 2023-02-06 06:17
1> 小智..:
构造函数默认返回'this'.根据oops概念,子类总是通过super()调用从父类继承'this'对象.因此,如果我们尝试在没有超级调用的子类中使用它,它将引发错误.如果我们从子类返回除"this"之外的任何内容,则不需要执行super()调用.我通过一些简单的例子解释过.
例1
class A {
constructor() {
this.a = 0;
}
}
class B extends A {
constructor() {
console.log(this);
}
}
const instanceA = new A();
console.log(instanceA) // A {a: 0}
const instanceB = new B();
console.log(instanceB) // Error: Must call super constructor in derived class before
accessing 'this' or returning from derived constructor
例2
class A {
constructor() {
this.a = 0;
}
}
class B extends A {
constructor() {
return {b: 3}
}
}
const instanceA = new A();
console.log(instanceA) // A {a: 0}
const instanceB = new B();
console.log(instanceB) // Object {b: 3}
例3
class A {
constructor() {
this.a = 0;
}
}
class B extends A {
constructor() {
super()
}
}
const instanceB = new B();
console.log(instanceB) // B {a: 0}