"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 > Quando evitar a instanciação imediata de classes anônimas?

Quando evitar a instanciação imediata de classes anônimas?

Publicado em 2024-11-08
Navegar:245

When to Avoid Immediate Instantiation of Anonymous Classes?

Instanciação imediata de classes anônimas: um conto de advertência

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; }
};
Declaração de lançamento Este artigo foi reimpresso em: 1729392136 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