Bonjour,

En plein découverte du Js, je lis pas mal de tutos à droite à gauche, mais je me rend compte que l'auto-formation c'est aussi un moyen de s'auto-embrouiller...

Si j’ai bien compris, en Js, si j'écris par exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
  function machine(P_piece, P_rouage){
    this.D_piece = P_piece;
    this.D_rouage = P_rouage;
 
    this.M_methode = function(P_planche){
      return this.D_piece+this.D_rouage+P_planche;
    }
  }
 
  var meuble_ikea = new machine(40,10);
 
  alert(meuble_ikea.M_methode(15)); //Affiche 65
Je peut aussi écrire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
  function machine(P_piece, P_rouage){
    this.D_piece = P_piece;
    this.D_rouage = P_rouage;
  }
 
  var meuble_ikea = new machine(40,10);
 
  machine.prototype.bricole = function(P_planche){
      return this.D_piece+this.D_rouage+P_planche;
    }
 
  alert(meuble_ikea.bricole(40)); //Affiche 90
Constatation :

Mais du coup, la seule différence notable que je vois avec la première solution, c'est que j'ai déclaré la méthode bricole hors de mon constructeur.

Questions :

* Il n'y a pas plus d'impacts que ça ? Je peut juste décider de remplir mon constructeur, ou bien de l'éclater en prototype ?

* Si je construits des prototypes hors de mon constructeur, sont-ils déclarés à chaque nouvelles instances comme si je les avais construis DANS le constructeur ?

* Vaut-il-mieux/Vaut-il mieux-pas abuser des prototypes ?

* Les prototypes peuvent-il représenter un risque pour les données membres ?

* Chocolatine ou pain au chocolat ?