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

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

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 Denunciar

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 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