Dans ES6, il est possible de définir des classes anonymes et de les instancier immédiatement. Bien que cette syntaxe puisse sembler attrayante au premier abord, il est crucial de comprendre ses pièges et pourquoi elle doit généralement être évitée.
Pour instancier directement une classe anonyme, nous utilisons la syntaxe suivante :
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo');
En coulisses, cela se traduit par la création d'une nouvelle fonction constructeur et d'un objet prototype pour chaque instanciation. Cela signifie que plusieurs objets créés à l'aide de cette méthode ne partageront aucun avantage de l'héritage de classe ou des relations prototypiques.
De plus, cette approche sape les tentatives de création d'objets singleton à l'aide de classes anonymes. La fonction constructeur est toujours accessible et utilisée pour créer des instances supplémentaires, annulant ainsi le comportement singleton prévu.
À la lumière de ces mises en garde, il est fortement recommandé d'éviter d'utiliser des classes anonymes immédiatement instanciées. Les littéraux d'objet plus simples offrent une alternative plus efficace et plus simple :
var entity = { name: 'Foo', getName() { return this.name; } };
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