Skip to content

Commit bc15850

Browse files
committed
Conflicts fixed on "Object to primitive conversion" page in french
language
1 parent 7476a48 commit bc15850

File tree

1 file changed

+25
-71
lines changed
  • 1-js/04-object-basics/09-object-toprimitive

1 file changed

+25
-71
lines changed

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

Lines changed: 25 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,24 @@
33

44
Que se passe-t-il lorsque des objets sont ajoutés `obj1 + obj2`, soustraits `obj1 - obj2` ou imprimés à l'aide de `alert (obj)` ?
55

6-
<<<<<<< HEAD
7-
Dans ce cas, les objets sont automatiquement convertis en primitives, puis l'opération est effectuée.
8-
=======
9-
JavaScript doesn't exactly allow to customize how operators work on objects. Unlike some other programming languages, such as Ruby or C++, we can't implement a special object method to handle an addition (or other operators).
6+
JavaScript ne permet pas exactement de personnaliser le fonctionnement des opérateurs sur les objets. Contrairement à certains autres langages de programmation, tels que Ruby ou C++, nous ne pouvons pas implémenter une méthode objet spéciale pour gérer un ajout (ou d'autres opérateurs).
107

11-
In case of such operations, objects are auto-converted to primitives, and then the operation is carried out over these primitives and results in a primitive value.
8+
Dans le cas de telles opérations, les objets sont auto-convertis en primitives, puis l'opération est effectuée sur ces primitives et aboutit à une valeur primitive.
129

13-
That's an important limitation, as the result of `obj1 + obj2` can't be another object!
10+
C'est une limitation importante, car le résultat de `obj1 + obj2` ne peut pas être un autre objet !
1411

15-
E.g. we can't make objects representing vectors or matrices (or achievements or whatever), add them and expect a "summed" object as the result. Such architectural feats are automatically "off the board".
12+
Par exemple. nous ne pouvons pas créer d'objets représentant des vecteurs ou des matrices (ou des réalisations ou autre), les ajouter et s'attendre à un objet "sommé" comme résultat. De telles prouesses architecturales sont automatiquement "hors jeu".
1613

17-
So, because we can't do much here, there's no maths with objects in real projects. When it happens, it's usually because of a coding mistake.
14+
Donc, parce que nous ne pouvons pas faire grand-chose ici, il n'y a pas de maths avec des objets dans de vrais projets. Lorsque cela se produit, c'est généralement à cause d'une erreur de codage.
1815

19-
In this chapter we'll cover how an object converts to primitive and how to customize it.
16+
Dans ce chapitre, nous verrons comment un objet se convertit en primitif et comment le personnaliser.
2017

21-
We have two purposes:
18+
Nous avons deux objectifs :
2219

23-
1. It will allow us to understand what's going on in case of coding mistakes, when such an operation happened accidentally.
24-
2. There are exceptions, where such operations are possible and look good. E.g. subtracting or comparing dates (`Date` objects). We'll come across them later.
20+
1. Cela nous permettra de comprendre ce qui se passe en cas d'erreur de codage, lorsqu'une telle opération s'est produite accidentellement.
21+
2. Il existe des exceptions, où de telles opérations sont possibles et semblent bonnes. Par exemple. soustraire ou comparer des dates (objets `Date`). Nous les verrons plus tard.
2522

26-
## Conversion rules
27-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
23+
## Règles de conversion
2824

2925
Dans le chapitre <info:type-conversions> nous avons vu les règles pour les conversions numériques, chaînes et booléennes de primitives. Mais nous avions mis de côté les objets. Maintenant que nous connaissons les méthodes et les symboles, il devient possible de l'aborder.
3026

@@ -35,19 +31,9 @@ Pour les objets, il n’y a pas de conversion to-boolean, car tous les objets so
3531
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.
3632

3733

38-
<<<<<<< HEAD
39-
## ToPrimitive
40-
4134
Nous pouvons affiner la conversion de chaînes de caractères et de chiffres en utilisant des méthodes d’objet spéciales.
4235

4336
Il existe trois variantes de conversion de type, appelées "hints", décrites dans la [specification](https://tc39.github.io/ecma262/#sec-toprimitive) :
44-
=======
45-
We can fine-tune string and numeric conversion, using special object methods.
46-
47-
There are three variants of type conversion, that happen in various situations.
48-
49-
They're called "hints", as described in the [specification](https://tc39.github.io/ecma262/#sec-toprimitive):
50-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
5137

5238

5339
**`"string"`**
@@ -118,24 +104,15 @@ Commençons par la première méthode. Il existe un symbole intégré appelé `S
118104
119105
```js
120106
obj[Symbol.toPrimitive] = function(hint) {
121-
<<<<<<< HEAD
122-
// doit renvoyer une valeur primitive
123-
// hint = un parmi "string", "number", "default"
107+
// voici le code pour convertir cet objet en une primitive
108+
// il doit retourner une valeur primitive
109+
// hint = un de "string", "number", "default"
124110
};
125111
```
126112

127-
Par exemple, ici l'objet `user` l'implémente :
128-
=======
129-
// here goes the code to convert this object to a primitive
130-
// it must return a primitive value
131-
// hint = one of "string", "number", "default"
132-
};
133-
```
113+
Si la méthode `Symbol.toPrimitive` existe, elle est utilisée pour tous les hints et aucune autre méthode n'est nécessaire.
134114

135-
If the method `Symbol.toPrimitive` exists, it's used for all hints, and no more methods are needed.
136-
137-
For instance, here `user` object implements it:
138-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
115+
Par exemple, ici l'objet `user` l'implémente :
139116

140117
```js run
141118
let user = {
@@ -157,23 +134,14 @@ alert(user + 500); // hint: default -> 1500
157134
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.
158135

159136

160-
## toString/valueOf
161-
162-
<<<<<<< HEAD
163-
Méthodes `toString` et `valueOf` proviennent des temps anciens. Ce ne sont pas des symboles (les symboles n'existaient pas il n'y a pas si longtemps), mais plutôt des méthodes "régulières" avec des noms de chaînes de caractères. Ils fournissent une méthode alternative "à l'ancienne" pour implémenter la conversion.
137+
## toString / valueOf
164138

165-
S'il n'y a pas de `Symbol.toPrimitive`, alors JavaScript essaye de les trouver et essaie dans l'ordre :
139+
S'il n'y a pas de `Symbol.toPrimitive` alors JavaScript essaie de trouver les méthodes `toString` et `valueOf` :
166140

167-
- `toString -> valueOf` pour le hint "string".
168-
- `valueOf -> toString` sinon.
169-
=======
170-
If there's no `Symbol.toPrimitive` then JavaScript tries to find methods `toString` and `valueOf`:
141+
- Pour le hint "string" : `toString`, et s'il n'existe pas, alors `valueOf` (donc `toString` a la priorité pour les conversions de chaînes de caractères).
142+
- Pour d'autres hints : `valueOf`, et s'il n'existe pas, alors `toString` (donc `valueOf` a la priorité pour les mathématiques).
171143

172-
- For the "string" hint: `toString`, and if it doesn't exist, then `valueOf` (so `toString` has the priority for string conversions).
173-
- For other hints: `valueOf`, and if it doesn't exist, then `toString` (so `valueOf` has the priority for maths).
174-
175-
Methods `toString` and `valueOf` come from ancient times. They are not symbols (symbols did not exist that long ago), but rather "regular" string-named methods. They provide an alternative "old-style" way to implement the conversion.
176-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
144+
Les méthodes `toString` et `valueOf` viennent des temps anciens. Ce ne sont pas des symboles (les symboles n'existaient pas il y a si longtemps), mais plutôt des méthodes nommées par des chaînes de caractères "normales". Ils fournissent une alternative "à l'ancienne" pour implémenter la conversion.
177145

178146
Ces méthodes doivent renvoyer une valeur primitive. Si `toString` ou `valueOf` renvoie un objet, il est ignoré (comme s'il n'y avait pas de méthode).
179147

@@ -193,15 +161,9 @@ alert(user.valueOf() === user); // true
193161

194162
Donc, si nous essayons d'utiliser un objet en tant que chaîne de caractères, comme dans un `alert` ou autre chose, nous voyons par défaut `[object Object]`.
195163

196-
<<<<<<< HEAD
197-
Et la valeur par défaut `valueOf` n'est mentionnée ici que par souci d'exhaustivité, afin d'éviter toute confusion. Comme vous pouvez le constater, l'objet est renvoyé et est donc ignoré. Ne me demandez pas pourquoi, c'est pour des raisons historiques. Nous pouvons donc supposer que cela n'existe pas.
198-
199-
Implémentons ces méthodes.
200-
=======
201-
The default `valueOf` is mentioned here only for the sake of completeness, to avoid any confusion. As you can see, it returns the object itself, and so is ignored. Don't ask me why, that's for historical reasons. So we can assume it doesn't exist.
164+
Et la valeur par défaut `valueOf` n'est mentionnée ici que par souci d'exhaustivité, afin d'éviter toute confusion. Comme vous pouvez le constater, l'objet lui-même est renvoyé et est donc ignoré. Ne me demandez pas pourquoi, c'est pour des raisons historiques. Nous pouvons donc supposer que cela n'existe pas.
202165

203-
Let's implement these methods to customize the conversion.
204-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
166+
Implémentons ces méthodes pour personnaliser la conversion.
205167

206168
Par exemple, ici, `user` fait la même chose que ci-dessus en combinant `toString` et `valueOf` au lieu de `Symbol.toPrimitive` :
207169

@@ -246,11 +208,7 @@ alert(user + 500); // toString -> John500
246208

247209
En l'absence de `Symbol.toPrimitive` et de `valueOf`, `toString` gérera toutes les conversions primitives.
248210

249-
<<<<<<< HEAD
250-
## Retourner des types
251-
=======
252-
### A conversion can return any primitive type
253-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
211+
### Une conversion peut renvoyer n'importe quel type primitif
254212

255213
La chose importante à savoir sur toutes les méthodes de conversion de primitives est qu'elles ne renvoient pas nécessairement la primitive "hinted".
256214

@@ -319,10 +277,6 @@ L'algorithme de conversion est :
319277
3. Sinon, si l'indice est `"number"` ou `"default"`
320278
- essaie `obj.valueOf()` et `obj.toString()`, tout ce qui existe.
321279

322-
<<<<<<< HEAD
323-
En pratique, il suffit souvent d’implémenter uniquement `obj.toString()` en tant que méthode "fourre-tout" pour toutes les conversions qui renvoient une représentation "lisible par l’homme" d’un objet, à des fins de journalisation ou de débogage.
324-
=======
325-
In practice, it's often enough to implement only `obj.toString()` as a "catch-all" method for string conversions that should return a "human-readable" representation of an object, for logging or debugging purposes.
280+
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.
326281

327-
As for math operations, JavaScript doesn't provide a way to "override" them using methods, so real life projects rarely use them on objects.
328-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
282+
En ce qui concerne les opérations mathématiques, JavaScript ne fournit pas de moyen de les "remplacer" à l'aide de méthodes, de sorte que les projets réels les utilisent rarement sur des objets.

0 commit comments

Comments
 (0)