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

131
Visualizações
¿Cómo creo una función que devuelve una función en JavaScript?

Tengo un código como este unas cinco veces en mi proyecto, y sé que lo tendré más a menudo que eso:

 this.messageHandler = ({ data, origin }) => { if (origin === window.location.origin) { if ( data.listener === this.listener && data.event === 'rowclick' ) { this.recordId = data.datarow; } } }; window.addEventListener('message', this.messageHandler);

Cada vez aquí están las únicas diferencias:

  • this.listener tiene un valor único para cada clase.
  • this.recordId es diferente cada vez, podría ser this.userId o this.accountId , pero hasta ahora siempre establezco una propiedad que representa la ID de un registro.

Me gustaría crear una función que construya esta función. Creo que esto es posible en JavaScript. Me parece recordar haber visto información sobre cómo hacerlo en uno de los muchos recursos de JS que usé cuando aprendí el idioma. Pero no puedo encontrar la información ahora.

Idealmente, reemplazaría lo anterior con algo como esto:

 window.addEventListender('message', generateHandler(this.listener, (datarow) => { this.recordId = datarow; });

¿Cómo puedo hacer esto en JavaScript?

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

0

Agradezco los consejos en los comentarios, ayudaron bastante. Esto es lo que terminé escribiendo:

 const generateMessageHandler = (listener, callback) => { return ({ data, origin }) => { if ( origin === window.location.origin && data.listener === listener && data.event === 'rowclick' ) { callback(data.datarow); } }; }

Y luego llamarlo con esto:

 window.addEventListener( 'message', generateMessageHandler(this.rowClickListenerName, (datarow) => { this.recordId = datarow; }) );

Creo que tenía todas las piezas para comenzar, pero algo estaba bloqueando la implementación final hasta que los comentaristas comenzaron a hablar sobre funciones que devuelven funciones.

about 4 years ago · Juan Pablo Isaza Relatório

0

Ciertamente puede devolver la función dentro de una función en JavaScript, pero ¿cuál es el punto en su caso?

Simplemente puede configurar el controlador en una función anónima llamando a su función:

 window.addEventListener('message', () => yourFunction(arg1, arg2, arg3));
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