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

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

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 Report

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