Skip to content

Commit 6197a76

Browse files
committed
docs: translate section
1 parent fd0169f commit 6197a76

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

1-js/06-advanced-functions/10-bind/article-fr.md

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,4 +204,72 @@ for (let key in user) {
204204
```
205205

206206
Les librairies JavaScript fournissent aussi des fonctions partiques pour les liaisons de masse, e.g. [_.bindAll(object, methodNames)](https://lodash.com/docs#bindAll) avec lodash.
207-
````
207+
````
208+
209+
## Les fonctions partielles
210+
211+
Jusqu'à maintenant nous avons parlé uniquement de lier `this`. Allons plus loin.
212+
213+
Nous pouvons lier `this`, mais aussi des arguments. C'est rarement utilisé, mais ça peut être utile.
214+
215+
La syntaxe complète de `bind` :
216+
217+
```js
218+
let bound = func.bind(context, [arg1], [arg2], ...);
219+
```
220+
221+
Elle permet de lié le contexte en tant que `this` et de démarrer les arguments de la fonction.
222+
223+
Par exemple, nous avons une fonction de multiplication `mul(a, b)` :
224+
225+
```js
226+
function mul(a, b) {
227+
return a * b;
228+
}
229+
```
230+
231+
Utilisons `bind` pour créer une fonction `double` sur cette base :
232+
233+
```js run
234+
function mul(a, b) {
235+
return a * b;
236+
}
237+
238+
*!*
239+
let double = mul.bind(null, 2);
240+
*/!*
241+
242+
alert( double(3) ); // = mul(2, 3) = 6
243+
alert( double(4) ); // = mul(2, 4) = 8
244+
alert( double(5) ); // = mul(2, 5) = 10
245+
```
246+
247+
L'appel à `mul.bind(null, 2)` créer une nouvelle fonction `double` qui transmet les appels à `mul`, corrigeant `null` dans le contexte et `2` comme premier argument. Les arguments sont passés "tel quel" plus loin.
248+
249+
Ça s'appelle [l'application de fonction partielle](https://en.wikipedia.org/wiki/Partial_application) -- nous créeons une nouvelle fonction en corrigeant certains paramètres d'une fonction existante.
250+
251+
Veuillez noter que nous n'utilisons actuellement pas `this` ici. Mais `bind` en a besoin, donc nous devrions mettre quelque chose dedans comme `null`.
252+
253+
La fonction `triple` dans le code ci-dessous triple la valeur :
254+
255+
```js run
256+
function mul(a, b) {
257+
return a * b;
258+
}
259+
260+
*!*
261+
let triple = mul.bind(null, 3);
262+
*/!*
263+
264+
alert( triple(3) ); // = mul(3, 3) = 9
265+
alert( triple(4) ); // = mul(3, 4) = 12
266+
alert( triple(5) ); // = mul(3, 5) = 15
267+
```
268+
269+
Pourquoi faisons nous généralement un fonction partielle ?
270+
271+
L'avantage de faire ça est que on peut créer une fonction indépendante avec un nom lisible (`double`, `triple`). Nous pouvons les utiliser et ne pas fournir de premier argument à chaque fois comme c'est corrigé par `bind`.
272+
273+
Dans d'autres cas, les fonctions partielles sont utiles quand nous avons des fonctions vraiment génériques et que nous voulons une variante moins universelle pour des raisons pratiques.
274+
275+
Par exemple, nous avons une fonction `send(from, to, text)`. Alors, dans un objet `user` nous pourrions vouloir en utiliser une variante partielle : `sendTo(to, text)` qui envoie depuis l'utilisateur actuel.

0 commit comments

Comments
 (0)