Je crée une classe Vector, qui peut contenir trois valeurs numériques. Cependant, un grand nombre d'opérations peuvent être effectuées sur un tel vecteur - par ex. obtenir la magnitude, ajouter ou soustraire un autre vecteur etc.Devrais-je utiliser un prototype ou non?
Je me demandais si ces fonctions devaient être codées comme étant une fonction prototype de la classe Vector, ou si je devais les définir dans le constructeur.
Alors, laquelle de ces deux méthodes est préférable?
function Vector3D(x, y, z) {
this.x = x;
this.y = y
this.z = z;
}
Vector3D.prototype.magnitude = function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
};
ou
function Vector3D(x, y, z) {
this.x = x;
this.y = y;
this.z = z;
this.magnitude = function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
};
}
Merci pour votre réaction. x, y et z devraient aussi pouvoir être extraits d'une instance de Vector3D, ils devraient donc être publics. Dans ce cas, le prototype serait-il le meilleur choix? – pimvdb
+1 pour la réponse correcte, mais je préfère les prototypes, car quoi que ce soit privé dans js est une chimère, et généralement plus difficile pour vous à l'unité de tester votre code - qui cachez-vous les choses de vous, sauf :) –
Je suis d'accord avec vous, donc je n'ai que des variables publiques. Dans Google Chrome Developer Tools, les fonctions sont affichées en tant que membres si elles sont transmises par le constructeur, alors que ce serait plus pratique si elles étaient cachées dans le prototype et que seulement x, y et z apparaîtraient là. – pimvdb