"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > As classes anônimas imediatamente instanciadas no ES6 são uma má ideia?

As classes anônimas imediatamente instanciadas no ES6 são uma má ideia?

Publicado em 2024-11-09
Navegar:301

Are Immediately Instantiated Anonymous Classes in ES6 a Bad Idea?

Classes anônimas imediatamente instanciadas: uma receita para o desastre

No ES6, a capacidade de definir classes anônimas fornece açúcar sintático para declarações de classe. Embora conveniente, a instanciação imediata de tais classes pode levar a uma infinidade de problemas.

O que acontece nos bastidores?

Quando uma classe anônima é instanciada imediatamente, o JavaScript cria uma nova função construtora e objeto protótipo dinamicamente. Cada avaliação da expressão resulta em uma função construtora e um protótipo distintos.

Desvantagens da instanciação imediata

Esta prática tem várias desvantagens significativas:

Falta de reutilização:
Ao contrário das classes nomeadas, as classes anônimas instanciadas imediatamente criam um novo construtor e protótipo a cada vez. Isso significa que múltiplas instâncias não compartilharão o mesmo protótipo, perdendo os benefícios da herança de classe e do compartilhamento de protótipo.

Falácia Singleton:
Se a intenção por trás do uso deste padrão é criar um objeto singleton, ele falha. A função construtora permanece acessível, permitindo a criação de múltiplas instâncias usando newentity.constructor.

Evitar a todo custo

O consenso é claro: classes anônimas imediatamente instanciadas devem ser evitadas. Um literal de objeto simples fornece uma alternativa mais eficiente e direta:

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

Advertência: considerações entre idiomas

Embora o novo padrão de classe seja aceitável em algumas outras linguagens, ele se comporta de maneira diferente em JavaScript. A natureza dinâmica da criação de classes do JavaScript exclui as vantagens que essas linguagens desfrutam.

Declaração de lançamento Este artigo foi reimpresso em: 1729392316 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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