From 844f5103992238c0c23203286dad16a466e89c97 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:09 +0200 Subject: move *.html to *.md --- .../reference/classes/constructor/index.html | 172 --------------------- .../reference/classes/constructor/index.md | 172 +++++++++++++++++++++ 2 files changed, 172 insertions(+), 172 deletions(-) delete mode 100644 files/fr/web/javascript/reference/classes/constructor/index.html create mode 100644 files/fr/web/javascript/reference/classes/constructor/index.md (limited to 'files/fr/web/javascript/reference/classes/constructor') diff --git a/files/fr/web/javascript/reference/classes/constructor/index.html b/files/fr/web/javascript/reference/classes/constructor/index.html deleted file mode 100644 index f488f06dc5..0000000000 --- a/files/fr/web/javascript/reference/classes/constructor/index.html +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: constructor -slug: Web/JavaScript/Reference/Classes/constructor -tags: - - Classes - - ECMAScript 2015 - - JavaScript - - Language feature -translation_of: Web/JavaScript/Reference/Classes/constructor -browser-compat: javascript.classes.constructor ---- -
{{jsSidebar("Classes")}}
- -

La méthode constructor est une méthode qui est utilisée pour créer et initialiser un objet lorsqu'on utilise le mot clé class.

- -
{{EmbedInteractiveExample("pages/js/classes-constructor.html")}}
- -

Syntaxe

- -
constructor() { ... }
-constructor(argument0) { ... }
-constructor(argument0, argument1) { ... }
-constructor(argument0, argument1, ... , argumentN) { ... }
- -

Description

- -

Un constructeur vous permet de fournir toute initialisation personnalisée qui doit être effectuée avant que toute autre méthode puisse être appelée sur un objet instancié.

- -
class Person {
-  constructor(name) {
-    this.name = name;
-  }
-
-  introduce() {
-    console.log(`Hello, my name is ${this.name}`);
-  }
-}
-
-const otto = new Person('Otto');
-
-otto.introduce();
- -

Si vous ne fournissez pas votre propre constructeur, alors un constructeur par défaut sera fourni pour vous. Si votre classe est une classe de base, le constructeur par défaut est vide :

- -
constructor() {}
- -

Si votre classe est une classe dérivée, le constructeur par défaut appelle le constructeur parent, en transmettant tous les arguments qui ont été fournis :

- -
constructor(...args) {
-  super(...args);
-}
- -

Cela permet à un code comme celui-ci de fonctionner :

- -
class ValidationError extends Error {
-  printCustomerMessage() {
-    return `La validation a échoué :-( (détails : ${this.message})`;
-  }
-}
-
-try {
-  throw new ValidationError("Numéro de téléphone invalide");
-} catch (error) {
-   if (error instanceof ValidationError) {
-    console.log(error.name); // Il s'agit d'une erreur au lieu de ValidationError !
-    console.log(error.printCustomerMessage());
-  } else {
-    console.log('Erreur inconnue', error);
-    throw error;
-  }
-}
- -

La classe ValidationError n'a pas besoin d'un constructeur explicite, car elle n'a pas besoin de faire d'initialisation personnalisée. Le constructeur par défaut se charge alors d'initialiser le parent Error à partir de l'argument qui lui est fourni.

- -

Cependant, si vous fournissez votre propre constructeur, et que votre classe dérive d'une certaine classe parente, alors vous devez appeler explicitement le constructeur de la classe parente en utilisant super. Par exemple :

- -
class ValidationError extends Error {
-  constructor(message) {
-    super(message);  // appelle le constructeur de la classe parent
-    this.name = 'ValidationError';
-    this.code = '42';
-  }
-
-  printCustomerMessage() {
-     return `La validation a échoué :-( (détails : ${this.message}, code : ${this.code})`;
-  }
-}
-
-try {
-  throw new ValidationError("Numéro de téléphone invalide");
-} catch (error) {
-   if (error instanceof ValidationError) {
-    console.log(error.name); // Maintenant, c'est une ValidationError !
-    console.log(error.printCustomerMessage());
-  } else {
-    console.log('Unknown error', error);
-    throw error;
-  }
-}
- -

Il ne peut y avoir qu'une seule méthode spéciale portant le nom « constructor » dans une classe. Avoir plus d'une occurrence d'une méthode constructor dans une classe lancera une erreur SyntaxError.

- -

Exemples

- -

Utilisation de la méthode du constructor

- -

Cet extrait de code est tiré de l'échantillon de classes (démo en direct).

- -
class Square extends Polygon {
-  constructor(length) {
-    // Ici, on appelle le constructeur de la classe parente avec des longueurs
-    // fournies pour la largeur et la hauteur du polygone.
-    super(length, length);
-    // NOTE : Dans les classes dérivées, `super()` doit être appelé avant de pouvoir
-    // utiliser `this`. Si vous ne le faites pas, cela provoquera une ReferenceError.
-    this.name = 'Carré';
-  }
-
-  get area() {
-    return this.height * this.width;
-  }
-
-  set area(value) {
-    this.height = value**0.5;
-    this.width = value**0.5;
-  }
-}
- -

Un autre exemple

- -

Ici, le prototype de la classe Square est modifié — mais le constructeur de sa classe de base Polygon est toujours appelé lorsqu'une nouvelle instance d'un carré est créée.

- -
class Polygon {
-    constructor() {
-        this.name = "Polygone";
-    }
-}
-
-class Square extends Polygon {
-    constructor() {
-        super();
-    }
-}
-
-class Rectangle {}
-
-Object.setPrototypeOf(Square.prototype, Rectangle.prototype);
-
-console.log(Object.getPrototypeOf(Square.prototype) === Polygon.prototype); //false
-console.log(Object.getPrototypeOf(Square.prototype) === Rectangle.prototype); //true
-
-let newInstance = new Square();
-console.log(newInstance.name); // Polygone
- -

Spécifications

- -

{{Specifications}}

- -

Compatibilité des navigateurs

- -

{{Compat}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/classes/constructor/index.md b/files/fr/web/javascript/reference/classes/constructor/index.md new file mode 100644 index 0000000000..f488f06dc5 --- /dev/null +++ b/files/fr/web/javascript/reference/classes/constructor/index.md @@ -0,0 +1,172 @@ +--- +title: constructor +slug: Web/JavaScript/Reference/Classes/constructor +tags: + - Classes + - ECMAScript 2015 + - JavaScript + - Language feature +translation_of: Web/JavaScript/Reference/Classes/constructor +browser-compat: javascript.classes.constructor +--- +
{{jsSidebar("Classes")}}
+ +

La méthode constructor est une méthode qui est utilisée pour créer et initialiser un objet lorsqu'on utilise le mot clé class.

+ +
{{EmbedInteractiveExample("pages/js/classes-constructor.html")}}
+ +

Syntaxe

+ +
constructor() { ... }
+constructor(argument0) { ... }
+constructor(argument0, argument1) { ... }
+constructor(argument0, argument1, ... , argumentN) { ... }
+ +

Description

+ +

Un constructeur vous permet de fournir toute initialisation personnalisée qui doit être effectuée avant que toute autre méthode puisse être appelée sur un objet instancié.

+ +
class Person {
+  constructor(name) {
+    this.name = name;
+  }
+
+  introduce() {
+    console.log(`Hello, my name is ${this.name}`);
+  }
+}
+
+const otto = new Person('Otto');
+
+otto.introduce();
+ +

Si vous ne fournissez pas votre propre constructeur, alors un constructeur par défaut sera fourni pour vous. Si votre classe est une classe de base, le constructeur par défaut est vide :

+ +
constructor() {}
+ +

Si votre classe est une classe dérivée, le constructeur par défaut appelle le constructeur parent, en transmettant tous les arguments qui ont été fournis :

+ +
constructor(...args) {
+  super(...args);
+}
+ +

Cela permet à un code comme celui-ci de fonctionner :

+ +
class ValidationError extends Error {
+  printCustomerMessage() {
+    return `La validation a échoué :-( (détails : ${this.message})`;
+  }
+}
+
+try {
+  throw new ValidationError("Numéro de téléphone invalide");
+} catch (error) {
+   if (error instanceof ValidationError) {
+    console.log(error.name); // Il s'agit d'une erreur au lieu de ValidationError !
+    console.log(error.printCustomerMessage());
+  } else {
+    console.log('Erreur inconnue', error);
+    throw error;
+  }
+}
+ +

La classe ValidationError n'a pas besoin d'un constructeur explicite, car elle n'a pas besoin de faire d'initialisation personnalisée. Le constructeur par défaut se charge alors d'initialiser le parent Error à partir de l'argument qui lui est fourni.

+ +

Cependant, si vous fournissez votre propre constructeur, et que votre classe dérive d'une certaine classe parente, alors vous devez appeler explicitement le constructeur de la classe parente en utilisant super. Par exemple :

+ +
class ValidationError extends Error {
+  constructor(message) {
+    super(message);  // appelle le constructeur de la classe parent
+    this.name = 'ValidationError';
+    this.code = '42';
+  }
+
+  printCustomerMessage() {
+     return `La validation a échoué :-( (détails : ${this.message}, code : ${this.code})`;
+  }
+}
+
+try {
+  throw new ValidationError("Numéro de téléphone invalide");
+} catch (error) {
+   if (error instanceof ValidationError) {
+    console.log(error.name); // Maintenant, c'est une ValidationError !
+    console.log(error.printCustomerMessage());
+  } else {
+    console.log('Unknown error', error);
+    throw error;
+  }
+}
+ +

Il ne peut y avoir qu'une seule méthode spéciale portant le nom « constructor » dans une classe. Avoir plus d'une occurrence d'une méthode constructor dans une classe lancera une erreur SyntaxError.

+ +

Exemples

+ +

Utilisation de la méthode du constructor

+ +

Cet extrait de code est tiré de l'échantillon de classes (démo en direct).

+ +
class Square extends Polygon {
+  constructor(length) {
+    // Ici, on appelle le constructeur de la classe parente avec des longueurs
+    // fournies pour la largeur et la hauteur du polygone.
+    super(length, length);
+    // NOTE : Dans les classes dérivées, `super()` doit être appelé avant de pouvoir
+    // utiliser `this`. Si vous ne le faites pas, cela provoquera une ReferenceError.
+    this.name = 'Carré';
+  }
+
+  get area() {
+    return this.height * this.width;
+  }
+
+  set area(value) {
+    this.height = value**0.5;
+    this.width = value**0.5;
+  }
+}
+ +

Un autre exemple

+ +

Ici, le prototype de la classe Square est modifié — mais le constructeur de sa classe de base Polygon est toujours appelé lorsqu'une nouvelle instance d'un carré est créée.

+ +
class Polygon {
+    constructor() {
+        this.name = "Polygone";
+    }
+}
+
+class Square extends Polygon {
+    constructor() {
+        super();
+    }
+}
+
+class Rectangle {}
+
+Object.setPrototypeOf(Square.prototype, Rectangle.prototype);
+
+console.log(Object.getPrototypeOf(Square.prototype) === Polygon.prototype); //false
+console.log(Object.getPrototypeOf(Square.prototype) === Rectangle.prototype); //true
+
+let newInstance = new Square();
+console.log(newInstance.name); // Polygone
+ +

Spécifications

+ +

{{Specifications}}

+ +

Compatibilité des navigateurs

+ +

{{Compat}}

+ +

Voir aussi

+ + -- cgit v1.2.3-54-g00ecf