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

227
Vistas
¿Cuál es la diferencia entre estos dos enfoques singleton en JS?

La forma de resolver el patrón singleton en JS (en realidad, TS) se ve así (el mejor enfoque si me preguntas):

 export default class Singleton { private static _instance: Selection constructor() { if (Selection._instance) { return Singleton._instance } else { Singleton._instance = this } } }

Y entonces:

 import Singleton from './Singleton.ts' const singleton_1 = new Singleton() const singleton_2 = new Singleton() singleton_1 === singleton_2 // true

Pero en este escenario tengo que crear nuevas variables cada vez que necesito esa clase.

Puedo lograr exactamente lo mismo de la manera más fácil:

 class Singleton { constructor() { // some logic } } export default new Singleton()
 import Singleton from './Singleton.ts' const wut = Singleton.field Singleton.method('do something')

¿Me estoy equivocando en algo o el primer enfoque es un poco excesivo y complicado y el segundo simplemente hace lo mismo de una manera más obvia?

Entiendo que si tengo campos estáticos en mi clase, no podría usarlos de esa manera, pero los casos en los que realmente necesita campos estáticos son raros.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Es esencial en un escenario donde solo se necesita crear una instancia, por ejemplo, una conexión de base de datos. Solo es posible crear una instancia cuando la conexión está cerrada o te aseguras de cerrar la instancia abierta antes de abrir una nueva. Este patrón también se conoce como patrón estricto, un inconveniente asociado con este patrón es su abrumadora experiencia en las pruebas debido a sus objetos de dependencias ocultas que no se seleccionan fácilmente para las pruebas.

 let databaseInstance = null; // tracks the number of instances created at a certain time let count = 0; function init() { console.log(`Opening database #${count + 1}`); //now perform operation } function createIntance() { if(databaseInstance == null) { databaseInstance = init(); } return databaseInstance; } function closeIntance() { console.log('closing database'); databaseInstance = null; } return { open: createIntance, close: closeIntance } } const database = DatabseConnection(); database.open(); //Open database #1 database.open(); //Open database #1 database.open(); //Open database #1 database.close(); //close database

fuente: https://codesource.io/javascript-design-patterns/

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