Maison >interface Web >js tutoriel >Les classes anonymes immédiatement instanciées dans ES6 sont-elles une mauvaise idée ?

Les classes anonymes immédiatement instanciées dans ES6 sont-elles une mauvaise idée ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-20 11:18:02263parcourir

Are Immediately Instantiated Anonymous Classes in ES6 a Bad Idea?

Classes anonymes immédiatement instanciées : une recette pour le désastre

Dans ES6, la possibilité de définir des classes anonymes fournit du sucre syntaxique pour les déclarations de classe. Bien que pratique, l'instanciation immédiate de telles classes peut entraîner une multitude de problèmes.

Que se passe-t-il dans les coulisses ?

Lorsqu'une classe anonyme est instanciée immédiatement, JavaScript crée une nouvelle fonction constructeur et prototyper un objet de manière dynamique. Chaque évaluation de l'expression aboutit à une fonction constructeur et à un prototype distincts.

Inconvénients de l'instanciation immédiate

Cette pratique présente plusieurs inconvénients importants :

Manque de réutilisabilité :
Contrairement aux classes nommées, les classes anonymes immédiatement instanciées créent à chaque fois un nouveau constructeur et un nouveau prototype. Cela signifie que plusieurs instances ne partageront pas le même prototype, perdant ainsi les avantages de l'héritage de classe et du partage de prototype.

Sophisme de Singleton :
Si l'intention derrière l'utilisation de ce modèle est de créer un objet singleton, il échoue. La fonction constructeur reste accessible, permettant la création de plusieurs instances à l'aide du nouveau entités.constructor.

Éviter à tout prix

Le consensus est clair : les classes anonymes immédiatement instanciées doivent être évitées. Un littéral d'objet simple offre une alternative plus efficace et plus simple :

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

Attention : considérations multilingues

Bien que le nouveau modèle de classe soit acceptable dans certains autres langages, il se comporte différemment en JavaScript . La nature dynamique de la création de classes JavaScript exclut les avantages dont bénéficient ces langages.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn