Le mot clé class
permet de créer une classe.
La méthode constructor
définit le constructeur de la classe.
Il est possible de définir dynamiquement des champs.
Le mot clé this
définit les champs d’une classe.
class Personne {
constructor(nom,prenom) {
this.nom = nom;
this.prenom = prenom;
}
}
let robert = new Personne('Oddet','Rossi');
console.log(robert.nom); // Oddet
console.log(robert.prenom); // Rossi
// Définition dynamique
robert.sexe = 'M';
Une méthode se définit comme une fonction sans le mot clé function.
Les propriétés sont référencés via le mot clé this
.
class Personne {
constructor(nom,prenom) {
this.nom = nom;
this.prenom = prenom;
}
getFullname() {
return this.prenom + ' ' + this.nom;
}
}
let robert = new Personne('Oddet','Rossi');
console.log(robert.getFullname()); // Rossi Oddet
Les mots clé get
et set
permettent de définir des accesseurs pour une propriété.
Le mot clé this permet de référencer la propriété exposée.
Pas de visibilité privée pour les champs d’une classe.
class Personne {
constructor(nom,prenom) {
this.nom = nom;
this.prenom = prenom;
}
get age(){
return this._age;
}
set age(newAge) {
this._age = newAge;
}
}
let robert = new Personne('Oddet','Robert');
robert.age = 12; // set age 12
console.log(robert.age); // get age
class Personne {
constructor(nom, prenom) {
this.nom = nom;
this.prenom = prenom;
}
// création d'une méthode static
static getDefaultCivilite() {
return 'Mademoiselle';
}
}
console.log(Personne.getDefaultCivilite()); // Mademoiselle
Le mot clé extends
permet de définir une relation d’héritage entre deux classes.
class Personne {
constructor(nom, prenom) {
this.nom = nom;
this.prenom = prenom;
}
}
class Client extends Personne {
}
let c = new Client(); // Client {nom: undefined, prenom: undefined}
Le mot clé super
permet de référencer des éléments de la classe parente.
class Personne {
constructor(nom, prenom) {
this.nom = nom;
this.prenom = prenom;
}
}
class Client extends Personne {
constructor(nom, prenom, matricule) {
super(nom, prenom);
this.matricule = matricule;
}
}
let c = new Client('Ro','Jul','A01'); // Client {nom: "Ro", prenom: "Jul", matricule: "A01"}
Il est possible de redéfinir une méthode.
Voici un exemple ici getNomComplet
.
class Personne {
constructor(nom, prenom) {
this.nom = nom;
this.prenom = prenom;
}
}
class Personne {
constructor(nom, prenom) {
this.nom = nom;
this.prenom = prenom;
}
getNomComplet() {
return this.nom + ' ' + this.prenom;
}
}
class Client extends Personne {
constructor(nom, prenom, matricule) {
super(nom, prenom);
this.matricule = matricule;
}
// redéfinition de méthode
getNomComplet() {
return super.getNomComplet() + ' ' + this.matricule;
}
}
let c = new Client('Ro','Jul','A01'); // Client {nom: "Ro", prenom: "Jul", matricule: "A01"}
console.log(c.getNomComplet()); // Ro Jul A01