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

199
Vistas
¿Es posible llamar a una función en un objeto que hace referencia a sí mismo?

Tengo un objeto que se parece a esto:

 const state = [] const spells = [ { name: 'test', channelDuration: 1000, castDuration: 1000, cast: () => { state.push(THIS) // <-- } }, {...}, {...} ]

Cuando un jugador usa un hechizo, ese hechizo se almacena en el estado del juego y luego espera a que channelDuration y castDuration .

Una vez que puede cast , mira el estado y llama al método de conversión:

 State.quest.bossFightState[USER].spell.cast() state = [Spell]

En dicho lanzamiento, necesito empujar el hechizo a una nueva matriz llamada statuses . Sin embargo, no puedo hacer referencia al objeto dentro del método de lanzamiento sin usar algunas funciones auxiliares adicionales para agarrar el hechizo específico. Y no quiero pasar agregar un spell de parámetro en el método de lanzamiento porque eso parece tonto.

¿Algunas ideas? O es un método de ayuda el camino a seguir aquí.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Una opción sería usar una function o método en lugar de una función de flecha, de modo que .cast tenga un this que se refiera al objeto externo.

 const state = [] const spells = [ { name: 'test', cast() { state.push(this) } } ] spells[0].cast(); console.log(state);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Me sorprende que nadie más haya captado esto... Estás usando this dentro de una función de flecha. this palabra clave actúa de manera diferente en las funciones de flecha; lea más sobre eso aquí

 const state = []; const spells = [ { name: 'test', cast: function () { state.push(this); }, }, ]; spells[0].cast(); console.log(state);

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