Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

209
Visualizações
¿Por qué esta desestructuración de matriz no funciona cuando se asigna a 'esto'?

Tengo una clase que ejecuta una función cloneButtons durante la construcción. La función cloneButtons toma una matriz oldButtons y devuelve una matriz newButtons con exactamente los mismos elementos. Mi problema es que me encuentro con un comportamiento extraño cuando trato de deconstruir la matriz. Cada vez que uso this para hacer una tarea de clase, las cosas simplemente dejan de funcionar.

Soy nuevo en JS, pero no puedo encontrar ninguna documentación sobre las limitaciones de usar this y por qué no funcionaría al desestructurar el valor de retorno de una función.

Estos son algunos ejemplos de lo que funciona y lo que no. El siguiente código funciona según lo previsto: los elementos en cloneButtons deconstruyen sin problemas.

 constructor () { const oldButtons = document.querySelectorAll('#hero-action-btn-cont button') const [attackBtn, healBtn, specialBtn] = Utils.cloneButtons(oldButtons) attackBtn.addEventListener('click', this.attackHandler.bind(this)) // this works perfectly }

Sin embargo, si trato de asignar los elementos de la matriz usando this mientras se desestructura en cualquier paso del proceso, obtengo una variedad de errores, todos derivados del hecho de que cualquier variable que tenga this permanece sin definir. Esto arroja un error de inicialización:

 constructor () { const oldButtons = document.querySelectorAll('#hero-action-btn-cont button') [this.attackBtn, this.healBtn, this.specialBtn] = Utils.cloneButtons(oldButtons) this.attackBtn.addEventListener('click', this.attackHandler.bind(this)) // cannot access oldButtons before initialization }

Otro método que no funciona:

 constructor () { const oldButtons = document.querySelectorAll('#hero-action-btn-cont button') this.newButtons = Utils.cloneButtons(oldButtons) [this.attackBtn, this.healBtn, this.specialBtn] = this.newButtons this.attackBtn.addEventListener('click', this.attackHandler.bind(this)) // this.attackBtn is undefined }

Para ayudar a identificar lo que va mal, aquí hay otro escenario que funciona perfectamente, que no implica desestructuración:

 constructor () { const oldButtons = document.querySelectorAll('#hero-action-btn-cont button') this.newButtons = Utils.cloneButtons(oldButtons) this.newButtons[0].addEventListener('click', this.attackHandler.bind(this)) //works but does not use destructuring }

Además, ni siquiera puedo ejecutar this.oldButtons = document.querySelectorAll(#id) ya que, por alguna razón, devuelve undefined. ¡¿Que me estoy perdiendo aqui?!

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda