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

96
Views
Perder el valor de esta palabra clave cuando se usa con variables de nivel de instancia en una clase en javascript

Tengo dos clases, una de ellas es la clase principal y la otra es la clase secundaria y lo que intento lograr es acceder a los valores de las variables de nivel de instancia de la clase secundaria mediante el uso de this palabra clave en un campo que se declara en el clase de padres . Pero cuando trato de hacerlo, devuelve undefined . ¿Puede alguien explicar qué podría estar yendo mal aquí? A continuación, he pegado un fragmento de código para su referencia. ¡Gracias!

 class Parent { someField = { someValue: 'Values are ::: '+ this.value1 + ' ' + this.value2, childType2: "Some gibberish" } initialize(childType1) { this.someField = this.someField[childType1]; } } class Child extends Parent { value1 = "someValue 1" value2 = "someValue 2" } const child = new Child(); child.initialize("someValue"); console.log(child.someField);

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No es que this esté mal, es una cuestión de tiempo. Su código que inicializa someField se ejecuta como parte del Parent principal, antes de que su código inicialice value1 y value2 se ejecute (como parte del constructor Child ). Entonces te vuelves undefined al leerlos.

De la forma en que funcionan los campos públicos en JavaScript, la definición de la propiedad definida por la declaración del campo se convierte en parte del código del constructor, exactamente como si lo hubiera escrito al principio del constructor (justo después de cualquier llamada a super ) (pero [efectivo ] usando Object.defineProperty , no solo una asignación simple; detalles ). Es decir, su código es efectivamente el mismo que este:

 class Parent { constructor() { Object.defineProperty(this, "someField", { value: { someValue: 'Values are ::: '+ this.value1 + ' ' + this.value2, childType2: "Some gibberish" }, writable: true, enumerable: true, configurable: true }); } initialize(childType1) { this.someField = this.someField[childType1]; } } class Child extends Parent { constructor() { super(); Object.defineProperty(this, "value1", { value: "someValue 1", writable: true, enumerable: true, configurable: true }); Object.defineProperty(this, "value2", { value: "someValue 2", writable: true, enumerable: true, configurable: true }); } } const child = new Child(); child.initialize("someValue"); console.log(child.someField);

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!