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

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

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