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

149
Vistas
¿Cómo obtener un módulo "global" separado por instancia?

¿Es posible obtener un módulo "global" individual para cada instancia?

 import MyModule from './index.js'; const first = new MyModule(); const second = new MyModule(); // PLEASE SEE EXAMPLE BELOW FOR LOGS // expect to log for both: // 1. "in entry: true" // 2. "in init: true" // but second module logs: // 1. "in entry: false" // 2. "in init: false"

El problema es que ambos comparten globals y 1. la instancia cambia la propiedad a false .

¿Cuáles son mis opciones para tener un módulo globals individual por instancia?

¡PD! Tengo decenas de miles de líneas de código heredado. Sería 100 veces mejor si no tuviera que cambiar/eliminar/refactorizar los contenidos de globals.js ni estas importaciones import globals from './globals.js'; . Sin embargo, dé todas sus ideas: necesito arreglarlo, incluso si necesito cambiar mucho.


Código del ejemplo anterior/ejemplo mínimo reproducible

índice.js

 import globals from './globals.js'; import init from './init.js'; export default function MyModule (conf) { console.log('in entry:', globals.state1); init(); }

globales.js

 export default { state1: true, };

init.js

 import globals from './globals.js'; export default function init () { console.log('in init:', globals.state1); globals.entry1 = false; }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Dado que un objeto se pasa por referencia, debe crear una copia cada vez que use globals .

Una buena manera es exportar una función como:

 /* globals.js */ const globals = { // Maybe wrap the object in Object.freeze() to prevent side effects state1: true, }; export default () => ({ ...globals });

Luego puede llamar a la función para crear una copia cada vez que la necesite.

 /* init.js */ import getGlobals from './globals.js'; export default function init () { const globals = getGlobals(); console.log('in init:', globals.state1); globals.entry1 = false; }
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