Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

191
Visualizações
Usar valor sobrescrito en el constructor principal

Estoy invocando una función en el constructor donde quiero usar la variable del niño en la llamada de función que se realiza a través del constructor principal. Para fines de demostración, he creado un pequeño script para mostrar lo que quiero hacer:

 class A{ intVal = 1; constructor() { this.identifyClass(); } identifyClass() { console.log("I am class A", this.intVal); // This should be the value that B has overwitten } } class B extends A { intVal = 2; } const x = new B();

Entonces, me gustaría que la función en el constructor principal use el valor que B sobrescribió, es decir. intVal = 2 pero actualmente usa el valor original. ¿Puedo usar alguna solución para esto para no tener que crear un constructor en B y luego invocar la función allí?

Nota : es una aplicación muy compleja en la que no quiero romper los cambios en A, que se usa en muchos lugares y la Clase B está expuesta al público, por lo que no quiero que las personas que usan la Clase B cambien nada si posible donde actualmente solo sobrescriben la variable de instancia

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Vale, creo que lo tengo. Creamos un símbolo , si el último argumento pasado al constructor no es el símbolo, entonces creamos un nuevo objeto, usando this.constructor , pasando los argumentos originales, más el símbolo, y luego llamamos identify . Esto separa efectivamente la llamada para identify del constructor, permitiéndonos obtener this.intVal de la subclase, sin dejar de ser transparente para el usuario de la subclase.

 const _sym = Symbol(); class A { intVal = 1; constructor() { const args = Array.from(arguments); const _ = args[args.length - 1]; if (_ !== _sym) { args.push(_sym); const el = new this.constructor(...args); el.identify(); return el; } } identify() { console.log(this.intVal); } } class B extends A { intVal = 2; } const x = new A(); const y = new B();

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda