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

169
Views
¿Cómo puede un método anidado acceder a las propiedades de otro objeto en una clase?

Tengo problemas para acceder a las propiedades de objeto necesarias en un método. Aquí tengo una versión simplificada de lo que estoy tratando de hacer. Tengo una clase Game que se usa para crear un nuevo objeto de juego. Una vez que se ha creado ese objeto, estoy tratando de ejecutar el método de dibujo. El método de sorteo usará información de state.house.color, pero parece que no puedo averiguar cómo acceder a él, ya que usar "esto" en dibujar no se referirá al objeto del juego. He usado .bind(this) en el pasado, pero eso no parece estar ayudando aquí, ya que necesitaría vincular un objeto, no una función. ¡Gracias por cualquier idea!

 class Game { state = { house: { color: "blue" } } assets = { house: { draw(){ //some logic here such as console.log(this.state.house.color) } } } }; let testGame = new Game(); testGame.assets.house.draw();
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La respuesta a su problema es la función de flecha, que no anulará this .

 class Game { state = { house: { color: "blue" } } assets = { house: { draw: () => { console.log(this.state.house.color); } } } } let testGame = new Game() testGame.assets.house.draw();

También puedes usar bind (peor en este caso):

 class Game { state = { house: { color: "blue" } } assets = { house: { draw() { console.log(this.state.house.color); } } } } let testGame = new Game() testGame.assets.house.draw.bind(testGame)();
about 4 years ago · Juan Pablo Isaza Report

0

Si bien podría crear fácilmente una función de flecha o una función vinculada que coloque en la propiedad .assets.house.draw , la solución real es no anidar propiedades en una instancia de clase como esa. Manténgalos en el nivel superior, no intente ponerles un espacio de nombres.

Si realmente lo necesita, cree una clase separada:

 class House { constructor(color) { this.color = color; } draw() { console.log(this.color); } } class Game { house = new House("blue"); } const testGame = new Game(); testGame.house.draw();

Pasa cualquier cosa que la casa necesite del juego a su constructor.

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!