Llame a la función padre que está anulando el hijo durante la cadena del constructor en JavaScript (ES6) [duplicado]

Esta pregunta ya tiene una respuesta aquí:

El constructor principal llama a las funciones anuladas antes de que todos los constructores secundarios finalicen 1 respuesta

He encontrado un problema a continuación con JavaScript (ES6)

class A{
  constructor(){
    this.foo();
  }
  foo(){
    console.log("foo in A is called");
  }
}

class B extends A{
  constructor(){
    super();
    this.foo();
  }
  foo(){
    console.log("foo in B is called");
  }
}

Lo que espero es

foo in A is called
foo in B is called

Pero en realidad es

foo in B is called
foo in B is called

Sé que puedo resolver esto simplemente agregandosuper.foo() en la función foo de la clase B

class B extends A{
  constructor(){
    super();
    this.foo();
  }
  foo(){
    super.foo() // add this line
    console.log("foo in B is called");
  }
}

Pero imagine un escenario similar a este:

El niño tiene que anular la función de los padres para hacer algunos trabajos adicionales y evitar que el acceso externo pueda acceder al original.

class B extends A{
  constructor(){
    super();
    this.initBar();
  }
  foo(){
    super.foo();
    this.bar.run(); //undefined
    console.log("foo in B is called");
  }
  initBar(){
    this.bar.run = function(){
      console.log("bar is running");
    };
  }
}

Parece quethis todavía señala al niñoB mientras construyendo en padreA. Es por eso que no puedo contactar a los padresA'sfoo.

Como hagothis para llamar a la función de versión principal que está anulando el elemento secundario durante la cadena del constructor?

¿O hay alguna solución mejor cuando se trata de un escenario como este?

Editar

Entonces, después de leer las respuestas, la pregunta principal se convierte en:

¿Se desaconseja ponerinitialize helpers osetter functions en constructor en JavaScript ya que los niños tienen la oportunidad de anularlos?

Para aclarar la situación más claramente: (perdón por mi mal ejemplo anterior :()

class A{
  constructor(name){
    this.setName(name);
  }
  setName(name){
    this._name = name;
  }
}

class B extends A{
  constructor(name){
    super(name);
    this._div = document.createElementById("div");
  }
  setName(name){
    super.setName(name);
    this._div.appendChild(document.createTextNode(name));
  }
}

new B("foo")

this._div estaránundefined.

¿Es una mala idea ya que child podrá anular la función?

class A{
  constructor(name){
    this.setName(name); // Is it bad?
  }
  ...
}

Entonces no debería usarinitialize helpers osetter functions en constructor como en Java, C ++ ...?

¿Debo llamar manualmente a cosas como esta?new A().init() para ayudarme a inicializar las cosas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta