No ES6, é possível definir classes anônimas e instanciá-las imediatamente. Embora essa sintaxe possa parecer atraente no início, é crucial entender suas armadilhas e por que geralmente deve ser evitada.
Para instanciar uma classe anônima diretamente, usamos a seguinte sintaxe:
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo');
Nos bastidores, isso resulta na criação de uma nova função construtora e um objeto protótipo para cada instanciação. Isso significa que vários objetos criados usando esse método não compartilharão nenhum benefício da herança de classe ou de relacionamentos prototípicos.
Além disso, essa abordagem prejudica as tentativas de criar objetos singleton usando classes anônimas. A função construtora ainda pode ser acessada e utilizada para criar instâncias adicionais, negando o comportamento singleton pretendido.
À luz dessas advertências, é altamente recomendável evitar o uso de classes anônimas instanciadas imediatamente. Literais de objeto mais simples oferecem uma alternativa mais eficiente e direta:
var entity = { name: 'Foo', getName() { return this.name; } };
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3