You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/01-prototype-inheritance/article.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -319,12 +319,12 @@ Remarque, il y a une chose amusante. D'où vient la méthode `rabbit.hasOwnPrope
319
319
320
320
...Mais pourquoi `hasOwnProperty` n'apparaît pas dans la boucle `for..in`, comme `eats` et `jumps`, s'il répertorie toutes les propriétés héritées.
321
321
322
-
La réponse est simple : ce n'est pas énumérable. Comme toutes les autres propriétés de `Object.prototype`, il possède l'attribut `enumerable: false`. C'est pourquoi ils ne sont pas répertoriés. Et `for..in` ne répertorie que les propriétés énumérables. C'est pourquoi elle et le reste des propriétés `Object.prototype` ne sont pas listés.
322
+
La réponse est simple : ce n'est pas énumérable. Comme toutes les autres propriétés de `Object.prototype`, il possède l'attribut `enumerable: false`. C'est pourquoi ils ne sont pas répertoriés. Et `for..in` ne répertorie que les propriétés énumérables. C'est pourquoi elle et le reste des propriétés de `Object.prototype` ne sont pas listés.
323
323
324
324
```smart header="Presque toutes les autres méthodes d'obtention de clé/valeur ignorent les propriétés héritées"
325
325
Presque toutes les autres méthodes d'obtention de clé/valeur, telles que `Object.keys`, `Object.values` et ainsi de suite ignorent les propriétés héritées.
326
326
327
-
Ils ne fonctionnent que sur l'objet lui-même. Les propriétés du prototype ne sont *pas* prises en compte.
327
+
Elles ne fonctionnent que sur l'objet lui-même. Les propriétés du prototype ne sont *pas* prises en compte.
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/02-function-prototype/1-changing-prototype/solution.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
2
-
Réponses:
2
+
Réponses:
3
3
4
4
1.`true`.
5
5
@@ -13,7 +13,7 @@ Réponses:
13
13
14
14
3.`true`.
15
15
16
-
Toutes les opérations `delete` sont appliquées directement à l'objet. `Delete rabbit.eats` tente ici de supprimer la propriété `eats` de `rabbit`, mais ne l’a pas. Donc l'opération n'aura aucun effet.
16
+
Toutes les opérations `delete` sont appliquées directement à l'objet. `delete rabbit.eats` tente ici de supprimer la propriété `eats` de `rabbit`, mais ne l’a pas. Donc l'opération n'aura aucun effet.
1. Tout d'abord, il cherche `constructor` dans `user`. Rien.
41
41
2. Ensuite, il suit la chaîne de prototypes. Le prototype de `user` est `User.prototype`, et il n'a pas non plus de `constructor` (parce que nous avons "oublié" de le régler correctement !).
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor/task.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -6,10 +6,10 @@ importance: 5
6
6
7
7
Imaginez nous avons un objet arbitraire `obj`, créé par une fonction constructeur - nous ne savons pas lequel, mais nous aimerions créer un nouvel objet à l'aide de celui-ci.
8
8
9
-
Pouvons-nous le faire comme ça?
9
+
Pouvons-nous le faire comme ça?
10
10
11
11
```js
12
12
let obj2 =newobj.constructor();
13
13
```
14
14
15
-
Donne un exemple de fonction constructeur pour `obj` qui laisse ce code fonctionner correctement. Et un exemple qui fait que ça marche mal.
15
+
Donne un exemple de fonction constructeur pour `obj` qui laisse ce code fonctionner correctement. Et un exemple qui fait que ça marche mal.
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/02-function-prototype/article.md
+17-17Lines changed: 17 additions & 17 deletions
Original file line number
Diff line number
Diff line change
@@ -5,14 +5,14 @@ Rappelez-vous que de nouveaux objets peuvent être créés avec une fonction con
5
5
Si `F.prototype` est un objet, alors l'opérateur `new` l'utilise pour définir `[[Prototype]]` pour le nouvel objet.
6
6
7
7
```smart header="Veuillez noter"
8
-
JavaScript avait l'héritage prototypique depuis le début. C'était l'une des caractéristiques principales de la langue.
8
+
JavaScript avait l'héritage prototypique depuis le début. C'était l'une des caractéristiques principales du langage.
9
9
10
10
Mais dans le passé, il n'y avait pas d'accès direct. La seule chose qui fonctionnait de manière fiable est une propriété `"prototype"` de la fonction constructeur décrite dans ce chapitre. Donc, il y a beaucoup de scripts qui l'utilisent encore.
11
11
```
12
12
13
13
Veuillez noter que `F.prototype` signifie ici une propriété régulière nommée `"prototype"` sur `F`. Cela ressemble quelque peu au terme "prototype", mais nous entendons ici une propriété régulière portant ce nom.
14
14
15
-
Voici l'exemple:
15
+
Voici l'exemple:
16
16
17
17
```js run
18
18
let animal = {
@@ -32,27 +32,27 @@ let rabbit = new Rabbit("White Rabbit"); // rabbit.__proto__ == animal
32
32
alert( rabbit.eats ); // true
33
33
```
34
34
35
-
Définir `Rabbit.prototype=animal` énonce littéralement ce qui suit: "Lorsqu'un `new Rabbit` est créé, assigner son `[[Prototype]]` à `animal`".
35
+
Définir `Rabbit.prototype=animal` énonce littéralement ce qui suit: "Lorsqu'un `new Rabbit` est créé, assigner son `[[Prototype]]` à `animal`".
36
36
37
-
C'est l'image résultante:
37
+
Voici l'image résultante:
38
38
39
39

40
40
41
41
Sur l'image, `"prototype"` est une flèche horizontale, ce qui signifie une propriété normale, et `[[Prototype]]` est vertical, ce qui signifie l'héritage de `rabbit` de `animal`.
42
42
43
43
```smart header="`F.prototype` utilisé uniquement pendant `new F`"
44
-
La propriété `F.prototype` est utilisée uniquement lorsque `new F` est appelé, elle attribue `[[Prototype]]` du nouvel objet. Après cela, il n'y a plus de connexion entre `F.prototype` et le nouvel objet.
44
+
La propriété `F.prototype` est utilisée uniquement lorsque `new F` est appelé, elle attribue `[[Prototype]]` du nouvel objet. Après cela, il n'y a plus de connexion entre `F.prototype` et le nouvel objet.
45
45
46
46
Si, après la création, la propriété `F.prototype` change (`F.prototype = <un autre objet>`), les nouveaux objets créés par `new F` auront un autre objet comme `[[Prototype]]`, mais les objets déjà existants conservent l'ancien.
47
47
```
48
48
49
49
## F.prototype par défaut, propriété du constructeur
50
50
51
-
Chaque fonction a la propriété `"prototype"` même si nous ne la fournissons pas.
51
+
Chaque fonction a la propriété `"prototype"` même si nous ne la fournissons pas.
52
52
53
53
Le `"prototype"` par défaut est un objet avec comme seule propriété `constructor` qui renvoie à la fonction elle-même.
Donc, pour garder le bon `"constructor"`, nous pouvons choisir d'ajouter/supprimer des propriétés au `"prototype"` par défaut au lieu de l'écraser dans son ensemble:
132
+
Donc, pour garder le bon `"constructor"`, nous pouvons choisir d'ajouter/supprimer des propriétés au `"prototype"` par défaut au lieu de l'écraser dans son ensemble:
133
133
134
134
```js
135
135
functionRabbit() {}
@@ -140,7 +140,7 @@ Rabbit.prototype.jumps = true
140
140
// le Rabbit.prototype.constructor par défaut est conservé
141
141
```
142
142
143
-
Ou bien, recréez manuellement la propriété `constructor`:
143
+
Ou bien, recréez manuellement la propriété `constructor`:
144
144
145
145
```js
146
146
Rabbit.prototype= {
@@ -153,18 +153,18 @@ Rabbit.prototype = {
153
153
// maintenant le constructeur est également correct, car nous l'avons ajouté
154
154
```
155
155
156
-
157
156
## Résumé
158
157
159
158
Dans ce chapitre, nous avons brièvement décrit la manière de définir un `[[Prototype]]` pour les objets créés via une fonction constructeur. Plus tard, nous verrons des modèles de programmation plus avancés qui en dépendent.
160
159
161
160
Tout est assez simple, juste quelques précisions pour clarifier les choses :
162
161
163
-
- La propriété `F.prototype` (nepasconfondreavec`[[Prototype]]`) définit `[[Prototype]]` de nouveaux objets lorsque `new F()` est appelée.
162
+
- La propriété `F.prototype` (nepasconfondreavec`[[Prototype]]`) définit `[[Prototype]]` sur les nouveaux objets lorsque `new F()` est appelée.
164
163
- La valeur de `F.prototype` devrait soit être un objet ou `null` : les autres valeurs ne fonctionneront pas.
165
164
- La propriété `"prototype"` n'a cet effet spécial que lorsqu'elle est définie dans une fonction constructeur et invoquée avec `new`.
166
165
167
-
Sur les objets ordinaires, le `prototype` n'a rien de spécial:
166
+
Sur les objets ordinaires, le `prototype` n'a rien de spécial :
0 commit comments