Classes et méthodes
Nous avons donc vu qu'une classe pouvait contenir des variables que l'on appelle des attributs. Une classe peut également contenir des fonctions que l'on appelle des méthodes.
Les méthodes de classe
Vous avez déjà vu une méthode, la méthode constructor qui est une sorte de méthode magique fournie par JavaScript qui permet d'utiliser le mot new pour créer une instance d'une classe.
Nous allons maintenant continuer notre exemple des Users et rajouter les fonctions dans notre classe.
Quand nous avions laissé notre classe User elle ressemblait à ceci :
class User {
firstName;
lastName;
grades;
constructor(firstName, lastName, grades)
{
this.firstName = firstName;
this.lastName = lastName;
this.grades = grades;
}
}
et notre exemple sous forme de module au début du cours contenait deux fonctions :
export function getUserFullName(user)
{
return `${user.firstName} ${user.lastName}`;
}
export function getUserAverage(grades)
{
let sum = 0;
for(let grade of grades)
{
sum += grade;
}
return sum / grades.length;
}
Nous allons donc placer ces deux fonctions dans notre classe, elles vont devenir des méthodes de la classe :
class User {
firstName;
lastName;
grades;
constructor(firstName, lastName, grades)
{
this.firstName = firstName;
this.lastName = lastName;
this.grades = grades;
}
// pas de paramètre puisqu'on renvoie les infos de la classe
getUserFullName()
{
// on remplace le nom du parametre par this
return `${this.firstName} ${this.lastName}`;
}
// pas de paramètre puisqu'on utilise les grades de la classe
getUserAverage()
{
let sum = 0;
// grades devient this.grades
for(let grade of this.grades)
{
sum += grade;
}
return sum / this.grades.length;
}
}
La classe ci-dessus est parfaitement valable, mais nous pouvons également modifier un peu le nom de nos méthodes. Comme elles sont dans la classe User plus besoin de préciser dans le nom de la fonction qu'elle concerne les users :
class User {
firstName;
lastName;
grades;
constructor(firstName, lastName, grades)
{
this.firstName = firstName;
this.lastName = lastName;
this.grades = grades;
}
// pas de paramètre puisqu'on renvoie les infos de la classe
getFullName()
{
// on remplace le nom du parametre par this
return `${this.firstName} ${this.lastName}`;
}
// pas de paramètre puisqu'on utilise les grades de la classe
getAverage()
{
let sum = 0;
// grades devient this.grades
for(let grade of this.grades)
{
sum += grade;
}
return sum / this.grades.length;
}
}
Appeler la méthode d'une classe
Pour appeler la méthode d'une classe, on utilise l'opérateur . sur une instance de cette classe :
let mari = new User('Mari', 'Doucet', [10, 12, 11]);
console.log(mari.getFullName()); // Affiche "Mari Doucet"
console.log(mari.getAverage()); // Affiche la moyenne des notes (11)
Classes et modules
Dans le cours sur les modules je vous avais dit que vous pouviez exporter et importer n'importe quoi : c'est aussi vrai avec les classes :
User.js
export class User {
firstName;
lastName;
grades;
constructor(firstName, lastName, grades)
{
this.firstName = firstName;
this.lastName = lastName;
this.grades = grades;
}
// pas de paramètre puisqu'on renvoie les infos de la classe
getFullName()
{
// on remplace le nom du parametre par this
return `${this.firstName} ${this.lastName}`;
}
// pas de paramètre puisqu'on utilise les grades de la classe
getAverage()
{
let sum = 0;
// grades devient this.grades
for(let grade of this.grades)
{
sum += grade;
}
return sum / this.grades.length;
}
}
index.js
import { User } from './User.js';
let mari = new User('Mari', 'Doucet', [10, 12, 11]);
console.log(mari.getFullName()); // Affiche "Mari Doucet"
console.log(mari.getAverage()); // Affiche la moyenne des notes (11)
19 January 2026