Aupa, escribiendo desde mi absoluta y total ignorancia, voy a escribir un ejemplo de una clase en javascript, que lo he hecho a base de pruebas:
Creacion de la clase:
Código javascript
:
Ver originalvar clientInfo = function()
{
//...
};
Instanciacion de la clase:
Variables publicas:
Variables privadas:
Metodos publicos:
Código javascript
:
Ver originalclientInfo.prototype.getClientInfo = function()
{
...
}
Metodos privados:
Código javascript
:
Ver originalvar privateMethod = function(t)
{
...
};
t será el objeto this, en este caso el propio objeto para que podamos llamar a metodos/variables publicas para poder trabajar con ellos.
llamada a funcion publica desde la propia clase:
llamada a funcion publica desde un metodo privado de la clase:
Código javascript
:
Ver originalvar privateMethod = function(t)
{
t.getClientInfo();
};
llamada a funcion privada desde dentro de la clase:
Código javascript
:
Ver originalvar privateVar = privateMethod(this);
llamada a funcion publica desde fuera de la clase:
Código javascript
:
Ver originalvar a = new clientInfo();
a.getClientInfo();
Pero mejor lo vemos con un ejemplo:
Ejemplo corto:
Código javascript
:
Ver originalvar clientInfo = function()
{
clientInfo.prototype.getClientInfo = function()
{
var a = new Array();
a['browser'] = this.getBrowser();
return a;
}
clientInfo.prototype.getBrowser = function()
{
var a = 'default';
if(/Opera/.test(navigator.appName))
a = 'opera';
else if(/Microsoft Internet Explorer/.test(navigator.appName))
a = 'msie';
return a;
}
clientInfo.prototype.main = function()
{
var a = this.getClientInfo();
return a;
}
var privateMethod = function(t)
{
var a = new Array();
a['browser'] = t.getBrowser();
return a;
};
var privateVar = privateMethod(this);
alert("Private info: "+privateVar['browser']);
this.publicVar = this.main();
};
var a = new clientInfo();
alert("Public info: "+a.publicVar['browser']);
Ejemplo largo:
Código javascript
:
Ver originalvar clientInfo = function()
{
clientInfo.prototype.getClientInfo = function()
{
var a = new Array();
a['browser'] = this.getBrowser();
a['motor'] = this.getMotor();
a['so'] = this.getSO();
return a;
}
clientInfo.prototype.getBrowser = function()
{
var a = 'default';
if(/Opera/.test(navigator.appName))
a = 'opera';
else if(/Microsoft Internet Explorer/.test(navigator.appName))
a = 'msie';
else if(/Iron/.test(navigator.appVersion))
a = 'iron';
else if(/Chrome/.test(navigator.appVersion))
a = 'chrome';
else if(/Konqueror/.test(navigator.appVersion))
a = 'konqueror';
else if(/Safari/.test(navigator.appVersion))
a = 'safari';
else if(/Firefox/.test(navigator.userAgent))
a = 'firefox';
else if(/Iceweasel/.test(navigator.userAgent))
a = 'iceweasel';
return a;
}
clientInfo.prototype.getMotor = function()
{
var a = 'default';
if(/Opera/.test(navigator.appName))
a = 'opera';
else if(/Microsoft Internet Explorer/.test(navigator.appName))
a = 'msie';
else if(/WebKit/.test(navigator.userAgent))
a = 'webkit';
else if(/KHTML/.test(navigator.userAgent))
a = 'khtml';
else if(/Gecko/.test(navigator.userAgent))
a = 'gecko';
return a;
}
clientInfo.prototype.getSO = function()
{
var a = 'default';
if(/Windows/.test(navigator.userAgent))
a = 'windows';
else if(/Linux/.test(navigator.userAgent))
a = 'linux';
return a;
}
clientInfo.prototype.main = function()
{
var a = this.getClientInfo();
return a;
}
var privateMethod = function(t)
{
var a = new Array();
a['browser'] = t.getBrowser();
a['motor'] = t.getMotor();
a['so'] = t.getSO();
return a;
};
var privateVar = privateMethod(this);
alert("Private info: "+privateVar['browser']+" "+privateVar['motor']+" "+privateVar['so']);
this.publicVar = this.main();
};
var a = new clientInfo();
alert("Public info: "+a.publicVar['browser']+" "+a.publicVar['motor']+" "+a.publicVar['so']);
espero vuestros comentarios y sugerencias, muchas gracias, eskerrik asko.