débutant en javascript, je cherche à retrouver les fonctionnalités de l'héritage 'à la C++'. J'ai donc, en guise de test, fait cette fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
//fabrique un constructeur pour instancier un objet de type clsEnfant dérivé de clsParent
//version ultra simpliste (pas d'arguments pour les fonctions)
//permet la surcharge de fonctions
//permet d'acceder aux fonction du parent par parent.nomfonction
function heriteDe(clsParent,clsEnfant)
{
  function Constructeur()   //definition du constructeur
  {
        this.parent=new clsParent(); //instancier un objet parent
        for(var att in this.parent)  //parcourir les acctibuts du parent
        {
          if(typeof this.parent[att]== "function")
          { //definir,depuis l'enfant, une fonction d'acces à la fonction parent
              this[att] = eval("function() { this.parent."+att+"();}");
          }
          else
          { //definir, depuis l'enfant, les getter et setter d'accès à la propriété parent
            eval(" this."+att+" getter =function() {return this.parent."+att+"; }; "+
                 " this."+att+" setter =function(val){this.parent."+att+"=val; } ");
 
          }
        }
        clsEnfant.apply(this); //appliquer le constructeur du modele enfant
  }
  return Constructeur;
}
jeu d'essai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
function ProtoParent() //'classe' parente
{
  this.A=0;
  this.C=12;
  this.foncA=function() {this.A=this.A+1;}
  this.foncC=function() {this.C=this.C+5;}
}
function ProtoEnfant() //'classe' enfant
{
  this.B=8;
  this.foncB=function() {this.A=this.A+2; this.B=this.B+2;}
  //foncC surcharche la fonction parente et fait appel à celle-ci
  this.foncC=function() {this.parent.foncC(); this.C=this.C-6; }
}
 
 
var Modele=heriteDe(ProtoParent,ProtoEnfant); //creation du modele d'objet
 
var test= new Modele(); //instanciation de l'objet
 
alert("A: "+test.A+" B :"+test.B+" C: "+test.C);
test.foncA();
alert("fonction foncA appelée (hérité)A:"+test.A+" B :"+test.B+" C: "+test.C);
test.foncB();
alert("fonction foncB appelée A:"+test.A+" B :"+test.B+" C: "+test.C);
test.foncC();
alert("fonction foncC appelée (surcharge et appel interne de la foncC parent) A: "+test.A+" B :"+test.B+" c: "+test.C);


si des spécialistes du javascript pouvait me donner leur avis, afin de savoir si la piste envisagée est bonne où s'il y a d'autres directions plus efficaces.

Merci d'avance