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
The value of`this`in `User.staticMethod()`call is the class constructor `User`itself (the "object before dot" rule).
30
+
La valeur de`this`dans l'appel `User.staticMethod()`est le constructeur de la classe `User`lui-même (la règle "objet avant le point").
31
31
32
-
Usually, static methods are used to implement functions that belong to the class, but not to any particular object of it.
32
+
Généralement, les méthodes statiques sont utilisées pour implémenter des fonctions appartenant à la classe, mais pas à un objet particulier de celle-ci.
33
33
34
-
For instance, we have `Article`objects and need a function to compare them. A natural solution would be to add `Article.compare` method, like this:
34
+
Par exemple, nous avons des objets `Article`et avons besoin d'une fonction pour les comparer. Une solution naturelle serait d’ajouter la méthode `Article.compare`, comme ceci:
Here`Article.compare`stands "above" articles, as a means to compare them. It's not a method of an article, but rather of the whole class.
64
+
Ici,`Article.compare`est "au dessus" des articles, comme un moyen de les comparer. Ce n'est pas une méthode d'article, mais plutôt de toute la classe.
65
65
66
-
Another example would be a so-called "factory" method. Imagine, we need few ways to create an article:
66
+
Un autre exemple serait une méthode dite "d'usine". Imaginez, nous avons besoin de peu de façons de créer un article:
67
67
68
-
1.Create by given parameters (`title`, `date` etc).
69
-
2.Create an empty article with today's date.
70
-
3. ...or else somehow.
68
+
1.Créez avec des paramètres donnés (`title`, `date` etc.).
69
+
2.Créez un article vide avec la date du jour.
70
+
3. ... ou d'une certaine manière.
71
71
72
-
The first way can be implemented by the constructor. And for the second one we can make a static method of the class.
72
+
Le premier moyen peut être implémenté par le constructeur. Et pour le second, nous pouvons créer une méthode statique de la classe.
73
73
74
-
Like`Article.createTodays()`here:
74
+
Comme`Article.createTodays()`ici:
75
75
76
76
```js run
77
77
classArticle {
@@ -82,7 +82,7 @@ class Article {
82
82
83
83
*!*
84
84
staticcreateTodays() {
85
-
//remember, this = Article
85
+
//rappelez vous, this = Article
86
86
returnnewthis("Today's digest", newDate());
87
87
}
88
88
*/!*
@@ -93,21 +93,21 @@ let article = Article.createTodays();
93
93
alert( article.title ); // Todays digest
94
94
```
95
95
96
-
Now every time we need to create a today's digest, we can call`Article.createTodays()`. Once again, that's not a method of an article, but a method of the whole class.
96
+
Maintenant, chaque fois que nous avons besoin de créer le résumé d'aujourd'hui, nous pouvons appeler`Article.createTodays()`. Encore une fois, ce n'est pas une méthode d'article, mais une méthode de toute la classe.
97
97
98
-
Static methods are also used in database-related classes to search/save/remove entries from the database, like this:
98
+
Les méthodes statiques sont également utilisées dans les classes liées à la base de données pour rechercher/enregistrer/supprimer des entrées dans la base de données, comme ceci:
99
99
100
100
```js
101
-
//assuming Article is a special class for managing articles
102
-
//static method to remove the article:
101
+
//en supposant que Article est une classe spéciale pour la gestion d'articles
102
+
//méthode statique pour supprimer l'article:
103
103
Article.remove({id:12345});
104
104
```
105
105
106
-
## Static properties
106
+
## Propriétés statiques
107
107
108
108
[recent browser=Chrome]
109
109
110
-
Static properties are also possible, they look like regular class properties, but prepended by`static`:
110
+
Les propriétés statiques sont également possibles, elles ressemblent aux propriétés de classe ordinaires, mais précédées de`static`:
111
111
112
112
```js run
113
113
classArticle {
@@ -117,17 +117,17 @@ class Article {
117
117
alert( Article.publisher ); // Ilya Kantor
118
118
```
119
119
120
-
That is the same as a direct assignment to`Article`:
120
+
C’est la même chose qu’une assignation directe à`Article`:
121
121
122
122
```js
123
123
Article.publisher="Ilya Kantor";
124
124
```
125
125
126
-
## Inheritance of static methods
126
+
## Héritage de méthodes statiques
127
127
128
-
Static methods are inherited.
128
+
Les méthodes statiques sont héritées.
129
129
130
-
For instance, `Animal.compare`in the code below is inherited and accessible as`Rabbit.compare`:
130
+
Par exemple, `Animal.compare`dans le code ci-dessous est héritée et accessible par`Rabbit.compare`:
131
131
132
132
```js run
133
133
classAnimal {
@@ -150,7 +150,7 @@ class Animal {
150
150
151
151
}
152
152
153
-
//Inherit from Animal
153
+
//Hérite de Animal
154
154
classRabbitextendsAnimal {
155
155
hide() {
156
156
alert(`${this.name} hides!`);
@@ -166,46 +166,46 @@ let rabbits = [
166
166
rabbits.sort(Rabbit.compare);
167
167
*/!*
168
168
169
-
rabbits[0].run(); // Black Rabbit runs with speed 5.
169
+
rabbits[0].run(); // Black Rabbit court à la vitesse 5.
170
170
```
171
171
172
-
Now when we can call `Rabbit.compare`, the inherited `Animal.compare`will be called.
172
+
Maintenant, lorsque nous appellerons `Rabbit.compare`, le `Animal.compare`hérité sera appelé.
173
173
174
-
How does it work? Again, using prototypes. As you might have already guessed, `extends`gives `Rabbit`the `[[Prototype]]`reference to`Animal`.
174
+
Comment cela fonctionne t-il? Encore une fois, en utilisant des prototypes. Comme vous l'avez peut-être déjà deviné, `extends`donne à `Rabbit`la référence de `[[Prototype]]`à`Animal`.
175
175
176
176

177
177
178
-
So, `Rabbit extends Animal`creates two `[[Prototype]]` references:
178
+
Ainsi, `Rabbit extends Animal`crée deux références `[[Prototype]]`:
179
179
180
-
1.`Rabbit`function prototypally inherits from `Animal` function.
Static methods are used for the functionality that belongs to the class "as a whole", doesn't relate to a concrete class instance.
200
+
Les méthodes statiques sont utilisées pour les fonctionnalités appartenant à la classe "dans son ensemble", sans rapport avec une instance de classe concrète.
201
201
202
-
For example, a method for comparison`Article.compare(article1, article2)`or a factory method`Article.createTodays()`.
202
+
Par exemple, une méthode de comparaison`Article.compare(article1, article2)`ou une méthode d'usine`Article.createTodays()`.
203
203
204
-
They are labeled by the word`static`in class declaration.
204
+
Ils sont étiquetés par le mot`static`dans la déclaration de classe.
205
205
206
-
Static properties are used when we'd like to store class-level data, also not bound to an instance.
206
+
Les propriétés statiques sont utilisées lorsque nous souhaitons stocker des données au niveau de la classe, également non liées à une instance.
207
207
208
-
The syntax is:
208
+
La syntaxe est la suivante:
209
209
210
210
```js
211
211
classMyClass {
@@ -217,13 +217,13 @@ class MyClass {
217
217
}
218
218
```
219
219
220
-
Technically, static declaration is the same as assigning to the class itself:
220
+
Techniquement, la déclaration statique revient à assigner à la classe elle-même:
221
221
222
222
```js
223
223
MyClass.property=...
224
224
MyClass.method=...
225
225
```
226
226
227
-
Static properties and methods are inherited.
227
+
Les propriétés et méthodes statiques sont héritées.
228
228
229
-
For`class B extends A` the prototype of the class`B`itself points to`A`: `B.[[Prototype]] = A`. So if a field is not found in`B`, the search continues in`A`.
229
+
Pour`class B extends A`, le prototype de la classe`B`pointe lui-même à`A`: `B.[[Prototype]] = A`. Donc, si un champ n'est pas trouvé dans`B`, la recherche continue dans`A`.
0 commit comments