Ahora el código:
<html>
<head>
<title>Ejemplo clases JavaScript</title>
<script language="javascript">
const ROL_INVITADO = 'invitado';
const ROL_ADMIN = 'admin';
function Usuario(nombre, clave, rol) {
var nombre = nombre;
var clave = clave;
var rol = rol;
//setters
this.setNombre = function(_nombre) { nombre = _nombre; };
this.setClave = function(_clave) { clave = _clave; };
this.setRol = function(_rol) { rol = _rol; };
//getters
this.getNombre = function() { return nombre; };
this.getClave = function() { return clave; };
this.getRol = function() { return rol; };
//funciones
this.toString = function() {
retorno = 'nombre: ' + this.getNombre() + ', ';
retorno += 'clave: ' + this.getClave() + ', ';
retorno += 'rol: ' + this.getRol();
return retorno;
};
}
</script>
</head>
<body>
<script language="javascript">
var usuario = new Usuario('rodolfo', '123456', ROL_ADMIN);
document.writeln(usuario);
document.writeln('<br/>');
usuario.setRol(ROL_INVITADO);
document.writeln(usuario);
</script>
</body>
</html>
"this" depende del contexto, por eso es que no se puede usar dentro de los lambdas de "setNombre" y "getNombre", en ese caso "this" es dentro del contexto del lambda, es decir, "this" dentro de ese lambda es distinto de "this" fuera
ResponderEliminar