"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-09
Parcourir:187

Are Immediately Instantiated Anonymous Classes in ES6 a Bad Idea?

Classes anonymes immédiatement instanciées : une recette pour un 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 de 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. un objet singleton, il échoue. La fonction constructeur reste accessible, permettant la création de plusieurs instances à l'aide du nouveau Entity.constructor.

Éviter à tout prixLe 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 :

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

Mise en garde : 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.
            
Déclaration de sortie Cet article est réimprimé à l'adresse : 1729392316. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3