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

152
Views
Implicaciones de rendimiento del retorno frente a esto en una función de javascript

¿Cuál es la diferencia entre los siguientes bits de código:

 function Foo(context) { let mode; function setMode(m) { mode = m; } function doStuff() { if(mode === 'param') { // ... do stuff with context } else { // ... do different stuff with context } } this.setMode = setMode; this.doStuff = doStuff; }

contra

 function Bar(context) { let mode; function setMode(m) { mode = m; } function doStuff() { if(mode === 'param') { // ... do stuff with context } else { // ... do different stuff with context } } return { setMode, doStuff, } }

En Foo, uso this para 'aumentar' la new instancia de la función Foo:

 const f = new Foo(); f.setMode('param'); f.doStuff(stuff);

En Bar, return un objeto 'nuevo' con métodos cada vez que se llama a la función Bar:

 const b = Bar(); b.setMode('parampam'); f.doStuff(stuff);

¿Hay algún beneficio (¿rendimiento? ¿uso de memoria?) de usar una forma u otra? return vs this ?

Estoy familiarizado con el alcance léxico 'este' y cómo funciona el cierre, pero me gustaría saber si la elección anterior es puramente sintáctica o tiene implicaciones de rendimiento.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Las implicaciones de rendimiento serán triviales: no se preocupe por eso a menos que este código se llame mucho y, en ese caso, es mejor comparar ambos enfoques para ver cómo están afectando el rendimiento en su caso específico.

Hay algunas diferencias de comportamiento involucradas. Por ejemplo, new Foo().constructor apunta a la función Foo , mientras que el objeto devuelto al llamar a Foo() o Bar() sin la new palabra clave no lo hace. Además, puede usar el operador instanceof para verificar si un objeto es una instancia de Foo (es decir, si el objeto se construyó llamando a new Foo() ).

Así que quiere pensar en cómo quiere que los usuarios piensen en su función.

Si desea que los usuarios sientan que están creando una instancia de un tipo de clase específico e interactuando con esa clase, use el primer patrón. El hecho de que tenga funciones en ese objeto que actúen como métodos de instancia me hace pensar que eso es lo que busca en este caso.

Si desea que los usuarios sientan que la función a la que llaman obtendrá un objeto y lo devolverá, use el segundo patrón. En ese caso, probablemente cambiaría el nombre de Bar a algo como getBar() o createBar() .

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!