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

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

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