Alternatives aux variables de classe ES6
Dans ES5, les classes sont généralement créées à l'aide de frameworks avec un modèle qui inclut des variables de classe. Cependant, dans ES6, il n'existe aucun mécanisme intégré pour créer des variables de classe.
Pour résoudre ce problème, diverses approches ont été proposées, mais aucune ne s'est avérée pleinement satisfaisante. Par exemple, la création d'un gestionnaire ClassConfig et la transmission d'un objet paramètre distinct, ou l'utilisation de WeakMaps, ont été envisagées mais présentent des limites.
En 2018, une proposition d'étape 3 pour les variables de classe a été introduite. Cette proposition permet l'utilisation de la syntaxe suivante dans les déclarations/expressions de classe :
varName = value
Cette syntaxe définit une variable au sein de la classe. Cependant, la proposition est encore en cours de développement et n'a pas encore été finalisée.
Selon le wiki ES, la décision de ne pas inclure les variables de classe dans la spécification ES6 était intentionnelle. Les définitions de classe étaient destinées à déclarer les capacités d'une classe, plutôt que celles de ses membres. Les propriétés spécifiées dans les définitions de classe se voient attribuer des attributs comme si elles apparaissaient dans un littéral d'objet.
Par conséquent, pour définir des variables de classe, l'approche préférée consiste à utiliser le constructeur :
constructor(){ this.foo = bar }
Une alternative Une proposition pour ES7 est en cours de développement, qui vise à permettre des variables d'instance plus concises via des déclarations et des expressions de classe. Cette proposition est toujours en discussion et n'a pas encore été finalisée.
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!