override class fields
JS โฉ types โฉ class โฉ inheritance โฉ override class fields
โญ๏ธ class fields initialization๏ผ
The class fields are initialized:
base class: before
constructor()derived class: immediately after
super()
๐ ๅ้ฑ๏ผ derived class init ็ๅฎๆด็ใๅๅงๅใ้็จใ
๐็ฏไพ๏ผreplit
// base class
class A {
name = 'A';
constructor() { log(this.name); }
}
// derived class
class B extends A {
name = 'B'; // ๐ธ overridden class fields
constructor(){
// โ `this` doesn't exist before `super()`
super();
log(this.name);
}
}
new A(); // "A"
new B(); // "A"โ, "B" class A {
name = 'A';
constructor() {
// โญ๏ธ overridden class fields not fully initailized at this point
log(this.name);
}
}
class B extends A {
name = 'B'; // โญ๏ธ overridden class field
}
new A(); // "A"
new B(); // "A"โsee how class field are initialized in derived class init.
derived class fields are initialized immediately after super().
Last updated
Was this helpful?