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

251
Visualizações
Pasar el método de clase como devolución de llamada a otra clase en javascript

Estoy tratando de crear un menú emergente (a través de una clase) llamado desde otra clase. Después de completar estas entradas, quiero que el objeto desde el que se inició el menú emergente procese los datos de entrada.

Mi proceso de pensamiento creó el siguiente código (ofc simplificado):

 class foo{ constructor(){ this.prroperty = 'yes'; } eventMethod(){ let eventForm = new bar(); eventForm.fire(this.endMethod); } endMethod(values){ // console.log(this); console.log(values + this.prroperty); } } class bar{ constructor(){ this.property = 'no'; } fire(callback){ let value = 'message'; callback(value); } } let object = new foo(); object.eventMethod();

obviamente, esto no funciona porque "esto" ahora ya no se refiere al objeto creado por foo. Estoy planeando usar mucho el controlador de la clase foo y el menú emergente creado por la clase bar. Por lo tanto, estoy usando clases en lugar de crear objetos individuales.

Mi pregunta es si hay una manera de entregar y procesar los valores sin dejar de hacerlo dentro de las clases en lugar de los objetos porque quiero usarlos varias veces.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Cambié foo y bar a Form y Popup :

1) Solución rápida, y posiblemente sucia :

Puede enviar this como segundo argumento a .fire() :

 class Form { constructor() { this.property = 'yes'; } eventMethod() { let popup = new Popup(); popup.fire(this.endMethod, this); } endMethod(values, that) { console.log(values + that.property); } } class Popup { constructor() { this.property = 'no'; } fire(callback, that) { let value = 'message'; callback(value, that); } } let form = new Form(); form.eventMethod();

2) Usando .bind()

De manera más sólida, puede usar el método .bind() para vincular Form this a endMethod antes de enviarlo:

 class Form { constructor() { this.property = 'yes'; } eventMethod() { let popup = new Popup(); popup.fire(this.endMethod.bind(this)); } endMethod(values) { console.log(this); console.log(values + this.property); } } class Popup { constructor() { this.property = 'no'; } fire(callback) { let value = 'message'; callback(value); } } let form = new Form(); form.eventMethod();

about 4 years ago · Juan Pablo Isaza Relatório

0

Esta es una posible solución simple. Puede pasar a la ventana emergente toda la instancia de formulario "este"

 class Form { constructor() { this.property = 'yes'; } eventMethod() { let popup = new Popup(); popup.fire(this); } endMethod(values) { console.log(values + this.property); } } class Popup { constructor() { this.property = 'no'; } fire(form) { let value = 'message'; form.endMethod(value); } } let form = new Form(); form.eventMethod();

about 4 years ago · Juan Pablo Isaza Relatório
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