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
É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