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

354
Vistas
nueva función () a la función anónima en Javascript

Necesita convertir la siguiente función nueva () a su función anónima equivalente

 MyFunc.createShape=function(shapeName,i,p){ var funcBody="this.create("+shapeName+"._TYPE,i,p);" var finalFunc=new Function(i,p,funcBody); }

shapeName se llama con 100 de diferentes valores como Rectangle, Square, Circle, etc.

Lo que he probado es

 var global=""; MyFunc.createShape=function(shapeName,i,p){ global=shapeName; var finalFunc=function(i,p){ this.create(global+"._TYPE",i,p); }; }

El problema está en que el parámetro newFunction se trata como una variable/objeto, mientras que mi variable de función anónima se trata como una cadena.

 new Function(i,p,funcBody); At runtime is evaluated as function(i,p){ this.create(Rectangle._TYPE,i,p); };

Mientras mi código en tiempo de ejecución

 function(i,p){ this.create("Rectangle._TYPE",i,p); };

¿Cómo modifico mi función anónima para que se comporte igual que newFunction()?

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

0

No hagas ninguna manipulación de cadenas, en su lugar, escribe el código real en sí:

 MyFunc.createShape=function(shape,i,p){ function finalFunc (i,p) { this.create(shape._TYPE,i,p); }; }

Y no pase el nombre de la forma como cadena. Pase el objeto de forma en sí:

 MyFunc.createShape(Rectangle, i, p); // Don't pass "Rectangle", pass Rectangle

Si otras partes de su código pasan el nombre de la forma como una cadena, use un objeto para asignar la cadena a la forma:

 const shapes = { Rectangle: Rectangle, Circle: Circle, Triangle: Triangle, } MyFunc.createShape(shapes["Rectangle"], i, p);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Como se indica en los comentarios, no es recomendable usar este enfoque y ciertamente hay mejores formas de diseñar esta funcionalidad, pero es imposible ayudar sin conocer más detalles.

Pero para responder a su pregunta sobre cómo lograr lo que desea, puede intentar construir el cuerpo de la función como una cadena antes de analizarlo.

 MyFunc.createShape=function(shapeName,i,p){ global=shapeName; return new Function(`function(i,p){ this.create(${global}._TYPE,i,p); }`).bind(this); // if you don't wish to execute in current scope omit this }
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