Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

192
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda