Demande d'explication sur les prototypes
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... :aie:
Si j’ai bien compris, en Js, si j'écris par exemple:
Code:
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:
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 ?