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

151
Visualizações
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 Respostas
Responde à pergunta

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