Programmation Web Avancée

Blogue

Les cours

Héritage en JavaScript


Rédigé par , le
Cet article est désuet, voyez plutôt l'article : Créer des classes et faire de l'héritage en JavaScript.

Contrairement à la plupart des langages orientés objet, JavaScript ne contient pas la notion de "classe". Pourtant, tout est "objet" en JavaScript. Il est donc possible de faire de l'héritage, au même titre que Java (par exemple), via l'utilisation du prototype de l'objet.

Cette exemple possède 3 types d'objets (ou "classes") :
1- Personne (super classe)
2- Etudiant (classe héritant de Personne)
3- Enseignant (classe héritant de Personne)


La classe Personne
function Personne(prenom, nom) {
	this.type = "Personne";
	this.prenom = prenom;
	this.nom = nom;
}
			
Personne.prototype.getType = function() {
	return this.type;
}
			
Personne.prototype.getNomComplet = function() {
	return this.prenom + " " + this.nom;
}

La classe Etudiant
function Etudiant(prenom, nom, session) {
	Personne.call(this, prenom, nom);
	this.type = "Étudiant session : " + session;
}
			
Etudiant.prototype = new Personne(); // Héritage se fait ici
Etudiant.prototype.constructor = Etudiant;

La classe Enseignant
function Enseignant(prenom, nom) {
	Personne.call(this, prenom, nom);
	this.type = "Enseignant";
}
			
Enseignant.prototype = new Personne();			
Enseignant.prototype.constructor = Enseignant; 

Les tests
var listePersonnes = new Array();

var personne = new Personne("Inconnu", "Inconnu");
listePersonnes.push(personne);

var etudiant = new Etudiant("Émile", "F.", "Hiver 2012");
listePersonnes.push(etudiant);

var enseignant = new Enseignant("Frédéric", "Thériault");
listePersonnes.push(enseignant);
			
for (var i = 0; i < listePersonnes.length; i++) {
	document.write("<b>" + listePersonnes[i].getNomComplet() + "</b> ");
	document.write("<i>" + listePersonnes[i].getType() + "</i> ");
	document.write("<br />");
}
Le résultat des tests

Inconnu Inconnu Personne
Émile F. Étudiant session : Hiver 2012
Frédéric Thériault Enseignant


Merci à Émile F. (Hiver 2012) pour son aide avec le problème d'héritage des variables.

(Pour plus d'informations, lire sur prototype chaining)

Ajouter votre commentaire
(facultatif)
(facultatif et non divulgé)
Captcha image
Prenez le nombre affiché et faites moins 1.
 
Blog  

Les articles


Pour envoyer une demande d'assistance à l'enseignant, cliquez ici