Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!