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

243
Views
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 answers
Answer question

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 Report

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