Hay algunas maneras de conseguir un comportamiento de clase similar en javascript, los más comunes parecen ser prototipo basado así:¿Qué estilo usas para crear una "clase"?
function Vector(x, y, x) {
this.x = x;
this.y = y;
this.z = z;
return this;
}
Vector.prototype.length = function() { return Math.sqrt(this.x * this.x ...); }
y los enfoques basados cierre similar a
function Vector(x, y, z) {
this.length = function() { return Math.sqrt(x * x + ...); }
}
Por diversas razones este último es más rápido, pero he visto (y con frecuencia escribo) la versión del prototipo y sentía curiosidad por saber qué hacen otras personas.
Mis pruebas han demostrado que el enfoque basado en el cierre es más lento. Debe instanciar un cierre por separado para cada objeto. El enfoque prototipo comparte los métodos con todas las instancias. –