Skip to content

Commit 69dbb3a

Browse files
Apply minor fixes in '1-js/09-classes/07-mixins/article.md'
1 parent 8070a2d commit 69dbb3a

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

1-js/09-classes/07-mixins/article.md

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
En JavaScript, nous ne pouvons hériter que d'un seul objet. Il ne peut y avoir qu'un `[[Prototype]]` pour un objet. Et une classe peut étendre qu'une seule autre classe.
44

5-
Mais parfois, cela semble limitant. Par exemple, nous avons une classe `StreetSweeper` et une classe `Bicycle`, et nous voulons faire leur mélange: un `StreetSweepingBicycle`.
5+
Mais parfois, cela semble limitant. Par exemple, nous avons une classe `StreetSweeper` et une classe `Bicycle`, et nous voulons faire leur mélange : un `StreetSweepingBicycle`.
66

7-
Ou nous avons une classe `User` et une classe `EventEmitter` qui implémente la génération d'événements, et nous aimerions ajouter la fonctionnalité de `EventEmitter` à` User 'afin que nos utilisateurs puissent émettre des événements.
7+
Ou nous avons une classe `User` et une classe `EventEmitter` qui implémente la génération d'événements, et nous aimerions ajouter la fonctionnalité de `EventEmitter` à `User` afin que nos utilisateurs puissent émettre des événements.
88

99
Il existe un concept qui peut aider ici, appelé "mixins".
1010

@@ -16,7 +16,7 @@ En d'autres termes, un *mixin* fournit des méthodes qui implémentent un certai
1616

1717
Le moyen le plus simple d'implémenter un mixin en JavaScript est de créer un objet avec des méthodes utiles, de sorte que nous puissions facilement les fusionner dans un prototype de n'importe quelle classe.
1818

19-
Par exemple ici, le mixin `sayHiMixin` est utilisé pour ajouter un peu de "discours" à `User`:
19+
Par exemple ici, le mixin `sayHiMixin` est utilisé pour ajouter un peu de "discours" à `User` :
2020

2121
```js run
2222
*!*
@@ -47,7 +47,7 @@ Object.assign(User.prototype, sayHiMixin);
4747
new User("Dude").sayHi(); // Hello Dude!
4848
```
4949

50-
Il n'y a pas d'héritage, mais une méthode de copie simple. Ainsi, `User` peut hériter d'une autre classe et inclure le mixin pour ajouter les méthodes supplémentaires, comme ceci:
50+
Il n'y a pas d'héritage, mais une simple copie de méthode. Ainsi, `User` peut hériter d'une autre classe et inclure le mixin pour ajouter les méthodes supplémentaires, comme ceci :
5151

5252
```js
5353
class User extends Person {
@@ -59,7 +59,7 @@ Object.assign(User.prototype, sayHiMixin);
5959

6060
Les mixins peuvent utiliser l'héritage à l'intérieur d'eux-mêmes.
6161

62-
Par exemple, ici `sayHiMixin` hérite de `sayMixin`:
62+
Par exemple, ici `sayHiMixin` hérite de `sayMixin` :
6363

6464
```js run
6565
let sayMixin = {
@@ -97,7 +97,7 @@ new User("Dude").sayHi(); // Hello Dude!
9797

9898
Veuillez noter que l’appel à la méthode du parent `super.say()` à partir de `sayHiMixin` (aux lignes étiquetées avec `(*)`) recherche la méthode dans le prototype de ce mixin, pas la classe.
9999

100-
Voici le schéma (voir la partie droite):
100+
Voici le schéma (voir la partie droite) :
101101

102102
![](mixin-inheritance.svg)
103103

@@ -112,14 +112,14 @@ Faisons maintenant un mixin concret.
112112
Une caractéristique importante de nombreux objets de navigateur (par exemple) est qu'ils peuvent générer des événements. Les événements sont un excellent moyen de "diffuser des informations" à tous ceux qui le souhaitent. Faisons donc un mixin qui permet d’ajouter facilement des fonctions relatives aux événements à n’importe quelle classe/objet.
113113

114114
- Le mixin fournira une méthode `.trigger(name, [... data])` pour "générer un événement" quand quelque chose d'important lui arrive. L'argument `name` est un nom de l'événement, éventuellement suivi d'arguments supplémentaires avec les données d'événement.
115-
- Egalement la méthode `.on(name, handler)` qui ajoute la fonction `handler` en tant qu'écouteur aux événements portant le nom donné. Il sera appelé lorsqu’un événement avec le `name` donné se déclenche, et récupérera les arguments de l’appel `.trigger`.
115+
- Également la méthode `.on(name, handler)` qui ajoute la fonction `handler` en tant qu'écouteur aux événements portant le nom donné. Il sera appelé lorsqu’un événement avec le `name` donné se déclenche, et récupérera les arguments de l’appel `.trigger`.
116116
- ... Et la méthode `.off(name, handler)` qui supprime le programme d'écoute `handler`.
117117

118118
Après avoir ajouté le mixin, un objet `user` sera capable de générer un événement `"login"` lorsque le visiteur se connectera. Un autre objet, par exemple, `calendar` peut vouloir écouter de tels événements pour charger le calendrier de la personne connectée.
119119

120120
Ou bien, un `menu` peut générer l'événement `"select"` lorsqu'un élément de menu est sélectionné, et d'autres objets peuvent affecter des gestionnaires pour réagir à cet événement. Etc.
121121

122-
Voici le code:
122+
Voici le code :
123123

124124
```js run
125125
let eventMixin = {
@@ -164,12 +164,11 @@ let eventMixin = {
164164
};
165165
```
166166
167-
168167
- `.on(eventName, handler)` - assigne la fonction `handler` à exécuter lorsque l'événement portant ce nom se produit. Techniquement, il existe une propriété `_eventHandlers`, qui stocke un tableau de gestionnaires pour chaque nom d'événement, et simplement ajouté à la liste.
169168
- `.off(eventName, handler)` - supprime la fonction de la liste des gestionnaires.
170169
- `.trigger(eventName, ... args)` - génère l'événement: tous les gestionnaires de `_eventHandlers[eventName]` sont appelés, avec une liste d'arguments `...args`.
171170
172-
Usage:
171+
Usage :
173172
174173
```js run
175174
// Créez une classe
@@ -199,7 +198,7 @@ Et `eventMixin` mixin facilite l'ajout d'un tel comportement à autant de classe
199198
200199
## Résumé
201200
202-
*Mixin* -- est un terme générique de programmation orienté objet: une classe contenant des méthodes pour d’autres classes.
201+
*Mixin* est un terme générique de programmation orienté objet : une classe contenant des méthodes pour d’autres classes.
203202
204203
D'autres langages autorisent l'héritage multiple. JavaScript ne prend pas en charge l'héritage multiple, mais les mixins peuvent être implémentés en copiant les méthodes dans le prototype.
205204

0 commit comments

Comments
 (0)