En esta página (http://mckoss.com/jscript/object.htm) pueden encontrar un buen tutorial sobre javascript orientado a objetos . En mi poca experiencia programando con orientación a objetos en javascript me he dado cuenta de la gran potencia que tiene y sobretodo para aquellos que realizamos programación OO en otros lenguajes como PHP, C# o Java, es muy adecuado seguir el mismo paradigma en la parte de cliente. Además, hoy en dia, muchas librerías de javascript como prototype, scriptaculous y otras vienen orientadas a objetos, con lo cual, si nuestra aplicación es OO, especificar la misma en diagramas UML es muy fácil.
De manera resumida, para programar una clase javascript lo primero que hay que elegir es el nombre (Ej. Usuario), definir una función para el constructor con el mismo nombre, y agregar los métodos y atributos. Para la creación de los métodos tres formas de hacerlo. La primera, declarar las funciones anidadas en la declaración de la función de la clase, la segunda, declarar una variable por cada función usando this.variable y asignarle una función existente, y la última, asignar los métodos a través del atributo prototype. Aqui pongo dos ejemplos básicos.
Declaración anidada de métodos
function Usuario(){
this.crear=function crear(nombre){
//codigo de la función
}
}
Métodos mediante atributos.
function Usuario(){
this.crear=crearUsuario;
}
function crearUsuario(nombre){
//codigo de la función
}
Declaración mediante prototype.
function Usuario(){
}
Usuario.prototype.crear=function crearUsuario(nombre){
//codigo de la función
}
Mis preferidos son: Declaración anidada de métodos cuando la cantidad de métodos no es mucha y en general son cortos. Y la tercera, para cuando la clase es demasiado grande.