override constructor
✅ case 1:none has constructor
// no constructors
class A {}
class B extends A {}
let b = new B(); // ✅ OK
❌ case 2:returning from derived constructor without calling super()
first
class A2 {}
class B2 extends A2 {
constructor(){
// ---------------------------------------------------
// ⛔ ReferenceError:
// Must call `super()` constructor in derived class
// ☐ before accessing `this` or
// ☑ returning from derived constructor
// ---------------------------------------------------
}
}
let b2 = new B2();
❌ case 3:accessing this
before calling super()
class A3 {}
// (accessing `this` before calling `super()`)
class B3 extends A3 {
constructor(){
// ---------------------------------------------------
// ⛔ ReferenceError:
// Must call `super()` constructor in derived class
// ☑ before accessing `this` or
// ☑ returning from "derived constructor"
// ---------------------------------------------------
this.name = "Joe"
}
}
let b3 = new B3();
✅ case 4:
class A4 {}
class B4 extends A4 {
constructor(){
// ⭐ "derived constructor" expects "parent (base) constructor"
// to create an empty object and assign it to `this`.
super();
// ✅ now it's OK to access `this`.
this.name = "Joe";
}
}
let b4 = new B4();
log(b4.name); // Joe
Last updated
Was this helpful?