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

242
Views
Cuando exportamos new Foo() en JavaScript, ¿por qué regla sabemos que es un singleton? (si usamos webpack)

A menudo veo código

 export default Foo;

y Foo puede ser una función o una clase, pero si lo hacemos

 export default new Foo();

Me dijeron que debería ser un singleton cuando varios archivos en el proyecto lo hacen

 import Foo from './Foo';

y será el mismo objeto exacto, lo que significa que sería un singleton, pero ¿por qué regla sabemos que se instancia una vez en lugar de múltiples veces?

Creo que la respuesta estándar es que no hay garantía, pero ¿y si usamos webpack (o alguna otra herramienta), podemos saber que está garantizado que es solo uno?

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

0

export default new Foo();

es lo mismo que:

 const foo = new Foo(); export default foo;

A medida que se ejecuta el módulo, se crea 1 instancia de Foo. Esa instancia se está exportando, por lo que todos los que la importan obtienen la misma instancia.

Si desea verificar que son exactamente iguales, escriba 2 módulos que importen foo , luego haga que 1 de estos módulos pase su foo al otro a través de una función y haga una comparación a través del operador === .

 <html> <head> <script type="module" src="foo.js"></script> <script type="module" src="mod1.js"></script> <script type="module" src="mod2.js"></script> </head> <body></body> </html>

foo.js:

 export default {};

mod1.js:

 import myFoo from './foo.js'; export function mod1Func(other_foo) { console.log('same?', other_foo === myFoo); }

mod2.js:

 import myFoo from './foo.js'; import { mod1Func } from './mod1.js'; mod1Func(myFoo);

Y debería imprimir:

 same? true
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!