Skip to content

Commit e135813

Browse files
Add and remove some new lines to be more consistent
1 parent 0f0dec1 commit e135813

File tree

1 file changed

+2
-6
lines changed
  • 1-js/04-object-basics/09-object-toprimitive

1 file changed

+2
-6
lines changed

1-js/04-object-basics/09-object-toprimitive/article.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
# Conversion d'objet en primitive
32

43
Que se passe-t-il lorsque des objets sont ajoutés `obj1 + obj2`, soustraits `obj1 - obj2` ou imprimés à l'aide de `alert (obj)` ?
@@ -28,7 +27,6 @@ Dans le chapitre <info:type-conversions> nous avons vu les règles pour les conv
2827
2. La conversion numérique se produit lorsque nous soustrayons des objets ou appliquons des fonctions mathématiques. Par exemple, les objets `Date` (à traiter dans le chapitre <info:date>) peut être soustrait et le résultat de `date1 - date2` est la différence de temps entre deux dates.
2928
3. En ce qui concerne la conversion de chaîne de caractères - cela se produit généralement lorsque nous affichons un objet tel que `alert (obj)` et dans des contextes similaires.
3029

31-
3230
Nous pouvons implémenter nous-mêmes la conversion de chaînes de caractères et de chiffres, en utilisant des méthodes d'objet spéciales.
3331

3432
Passons maintenant aux détails techniques, car c'est le seul moyen d'aborder le sujet en profondeur.
@@ -41,7 +39,6 @@ Il existe trois variantes de conversion de type, qui se produisent dans diverses
4139

4240
Il existe trois variantes de conversion de type, appelées "hints", décrites dans la [specification](https://tc39.github.io/ecma262/#sec-toprimitive) :
4341

44-
4542
**`"string"`**
4643

4744
Pour une conversion d'un objet vers une chaîne de caractères, lorsque nous effectuons une opération sur un objet qui attend une chaîne, comme `alert` :
@@ -54,7 +51,6 @@ alert(obj);
5451
anotherObj[obj] = 123;
5552
```
5653

57-
5854
**`"number"`**
5955

6056
Pour une conversion d'objet en nombre, comme lorsque nous faisons des calculs :
@@ -139,7 +135,6 @@ alert(user + 500); // hint: default -> 1500
139135

140136
Comme on peut le voir d'après le code, `user` devient une chaîne de caractères auto-descriptive ou un montant d'argent en fonction de la conversion. La méthode unique `user[Symbol.toPrimitive]` gère tous les cas de conversion.
141137

142-
143138
## toString / valueOf
144139

145140
S'il n'y a pas de `Symbol.toPrimitive` alors JavaScript essaie de trouver les méthodes `toString` et `valueOf` :
@@ -233,6 +228,7 @@ En revanche, `Symbol.toPrimitive` est plus strict, il *doit* retourner une primi
233228
Comme nous le savons déjà, de nombreux opérateurs et fonctions effectuent des conversions de types, par exemple la multiplication `*` convertit les opérandes en nombres.
234229

235230
Si nous passons un objet en argument, il y a deux étapes de calcul :
231+
236232
1. L'objet est converti en primitive (en utilisant les règles décrites ci-dessus).
237233
2. Si cela est nécessaire pour d'autres calculs, la primitive résultante est également convertie.
238234

@@ -269,6 +265,7 @@ alert(obj + 2); // 22 ("2" + 2), la conversion en primitive a renvoyé une chaî
269265
La conversion objet à primitive est appelée automatiquement par de nombreuses fonctions intégrées et opérateurs qui attendent une primitive en tant que valeur.
270266

271267
Il en existe 3 types (hints) :
268+
272269
- `"string"` (pour `alert` et d'autres opérations qui nécessitent une chaîne de caractères)
273270
- `"number"` (pour des maths)
274271
- `"default"` (peu d'opérateurs, généralement des objets l'implémentent de la même manière que `"number"`)
@@ -286,4 +283,3 @@ L'algorithme de conversion est :
286283
Toutes ces méthodes doivent renvoyer une primitive pour fonctionner (si elle est définie).
287284

288285
En pratique, il suffit souvent d'implémenter uniquement `obj.toString()` comme méthode "fourre-tout" pour les conversions de chaînes de caractères qui devraient renvoyer une représentation "lisible par l'homme" d'un objet, à des fins de journalisation ou de débogage.
289-

0 commit comments

Comments
 (0)