Pour ta première question, il existera toujours UNE et UNE seule instance de la fonction "sogood".
Tandis que la fonction dosomething ne sera déclaré que lorsqu'un objet sera instancié et sera propre à cet objet, c'est à dire qu'il existera une fonction "dosomething" pour chaque objet instancié.
1 2 3 4 5 6 7 8 9
| ex:
var p1 = new Player('bodo1');
var p2 = new Player('bodo2');
if( p1.dosomething == p2.dosomething ){
// FALSE
}
if( p1.sogood == p2.sogood ){
// TRUE
} |
ne pas dupliquer une fonction (avec les prototypes) permet notament d'épargner pas mal de placer et d'exécution lors que tu crées des quantités conséquentes d'objets.
tu peux tester si une fonction (ou attribut) est propre à un objet grace à la méthode "hasOwnProperty"
p1.hasOwnProperty('sogood'); // false
l'avantage de redéclarer une méthode à l'intérieur de l'objet peut par exemple être utile pour accèder à des champs privés comme les getters.
1 2 3 4 5 6 7 8 9
| function Player(name){
var _name = name;
this.getName = function(){
return _name;
};
}
Player.prototype.getNameProto = function(){
return _name; // ne fonctionnera pas
}; |
Partager