Estoy creando una clase Vector, que básicamente puede contener tres valores numéricos. Sin embargo, se pueden realizar muchas operaciones con dicho vector, p. obtener la magnitud, sumar o restar otro vector, etc.¿Debo usar un prototipo o no?
Me preguntaba si estas funciones deberían codificarse como una función prototipo de la clase Vector, o si debería definirlas en el constructor.
Entonces, ¿cuál de estos dos métodos es preferible?
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);
};
o
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);
};
}
Gracias por su reacción. x, y y z también deberían poder extraerse de una instancia de Vector3D, por lo que deberían ser públicos. En este caso, ¿el prototipo sería la mejor opción? – pimvdb
+1 para la respuesta correcta, pero prefiero los prototipos, ya que cualquier cosa privada en js es una generación de energía, y por lo general solo hará que sea más difícil para usted probar su código. ¿De quién está ocultando las cosas excepto usted mismo? –
Acepto Contigo, por lo tanto, solo tengo variables públicas. En las herramientas de desarrollo de Google Chrome, las funciones también se muestran como miembros si pasaron por el constructor, mientras que sería más práctico si estuvieran 'ocultos' en el prototipo y solo se mostrarán x, yyz allí. – pimvdb