Si necesitamos que un objeto Javascript definido por nosotros mismos tenga métodos, tenemos varias opciones:
A. Podemos definir una función independiente que utilizaremos como método de nuestro objeto:
function datosUsuario(){
return this.login + ' ' + this.fecha_registro;
}
1. Caso de objeto literal:
var usu = {
login: "jcc",
fecha_registro: "20070818",
datosUsuario: datosUsuario
}
2. Caso de objeto definido con plantilla:
function Usuario(login, fecha_registro) {
this.login= login;
this.fecha_registro = fecha_registro;
this.datosUsuario = datosUsuario;
}
B. Podemos definir una función propia que utilizaremos como método de nuestro objeto:
1. Caso de objeto literal:
var usu = {
login: "jcc",
fecha_registro : "20070818",
datosUsuario : function(){
return this.login + ' '+ this.fecha_registro;
}
}
2. Caso de objeto definido con plantilla:
function Usuario(login, fecha_registro) {
this.login = login;
this.fecha_registro = fecha_registro;
this.datosUsuario = function(){
return this.login + ' ' + this.fecha_registro;
}
}
La principal diferencia entre los métodos A y B es que el B implementa de alguna manera lo que conocemos en programación orientada a objetos como encapsulación. Sólo un objeto del tipo que define el método puede utilizar la función datosUsuario().
obtener el resultado del metodo
//objeto.metodo()
var datos_de_usuario = usu0.datosUsuario();
NOTA: Hay un tercer caso:
C. Cuando tenemos un objeto ya definido, y por alguna razón necesitamos añadirle un nuevo método. Utilizamos la palabra reservada prototype igual que hacíamos para añadirle propiedades:
//Si el método se define a parte
Usuario.prototype.datosUsuario = datosUsuario;
//Si el método de define sólo par el objeto
Usuario.prototype.datosUsuario = function(){
return this.login + ' ' + this.fecha_registro;
}