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.
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.
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.
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; } };
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.
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