"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Son las clases anónimas creadas inmediatamente en ES6 una mala idea?

¿Son las clases anónimas creadas inmediatamente en ES6 una mala idea?

Publicado el 2024-11-09
Navegar:949

Are Immediately Instantiated Anonymous Classes in ES6 a Bad Idea?

Clases anónimas creadas inmediatamente: una receta para el desastre

En ES6, la capacidad de definir clases anónimas proporciona azúcar sintáctico para las declaraciones de clases. Si bien es conveniente, la creación inmediata de instancias de dichas clases puede generar una gran cantidad de problemas.

¿Qué sucede detrás de escena?

Cuando se crea una instancia inmediata de una clase anónima, JavaScript crea una nueva función constructora y objeto prototipo dinámicamente. Cada evaluación de la expresión da como resultado una función constructora y un prototipo distintos.

Inconvenientes de la creación de instancias inmediata

Esta práctica tiene varios inconvenientes importantes:

Falta de reutilización:
A diferencia de las clases con nombre, las clases anónimas instanciadas inmediatamente crean un nuevo constructor y un prototipo cada vez. Esto significa que varias instancias no compartirán el mismo prototipo, perdiendo los beneficios de la herencia de clases y el intercambio de prototipos.

Falacia Singleton:
Si la intención detrás del uso de este patrón es crear un objeto singleton, falla. La función constructora permanece accesible, lo que permite la creación de múltiples instancias usando el nuevo entidad.constructor.

Evitar a toda costa

El consenso es claro: se deben evitar las clases anónimas instanciadas inmediatamente. Un literal de objeto simple proporciona una alternativa más eficiente y directa:

var entity = {
  name: 'Foo',
  getName: function() { return this.name; }
};

Advertencia: consideraciones entre idiomas

Si bien el nuevo patrón de clase es aceptable en algunos otros idiomas, se comporta de manera diferente en JavaScript. La naturaleza dinámica de la creación de clases de JavaScript excluye las ventajas de las que disfrutan estos lenguajes.

Declaración de liberación Este artículo se reimprime en: 1729392316 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3