javascript - que - Instancia de clase anónima: ¿es una mala idea?
meter una clase dentro de otra java (1)
Instancia de clase anónima: ¿es una mala idea?
Sí, una muy mala. Tan malo como la new function() { … }
estaba en ES5 .
Este estilo de escritura conduce a la creación de una nueva función de constructor y objeto prototipo cada vez que se evalúa la expresión. Si crea varios objetos con este enfoque, no obtendrá ninguno de los beneficios de las clases / prototipos.
Si pretendía que este patrón creara un objeto singleton, también falló. El constructor todavía se crea, e incluso se puede acceder: se puede crear fácilmente una segunda instancia con el new entity.constructor
, lo que le hace new entity.constructor
todo el propósito.
Entonces no lo uses nunca . Un simple objeto literal es mucho más fácil de escribir, leer y crear instancias:
var entity = {
name: ''Foo'',
getName() { return this.name; }
};
console.log(entity.name); // Foo
No se deje engañar por otros idiomas donde el new class
patrón de new class
es común, funciona muy diferente allí que en JavaScript.
En ES6 podemos hacer una clase anónima:
var entity = class {
}
Pero también podemos instanciarlo:
var entity = new class {
constructor(name) { this.name = name; }
getName() { return this.name; }
}(''Foo'');
console.log(entity.getName()); // Foo
¿Qué se hace detrás de él, qué ventaja traerá y qué advertencias traerá también?