Foros del Web » Programando para Internet » Javascript »

ejemplo Clase Javascript

Estas en el tema de ejemplo Clase Javascript en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/11/2008, 09:29
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
De acuerdo ejemplo Clase Javascript

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 original
  1. var clientInfo = function()
  2. {
  3. //...
  4. };

Instanciacion de la clase:

Código javascript:
Ver original
  1. var a = new clientInfo();

Variables publicas:

Código javascript:
Ver original
  1. this.publicVar;

Variables privadas:

Código javascript:
Ver original
  1. this.publicVar;

Metodos publicos:

Código javascript:
Ver original
  1. clientInfo.prototype.getClientInfo = function()
  2. {
  3. ...
  4. }

Metodos privados:

Código javascript:
Ver original
  1. var privateMethod = function(t)
  2. {
  3. ...
  4. };

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:

Código javascript:
Ver original
  1. this.getClientInfo();

llamada a funcion publica desde un metodo privado de la clase:

Código javascript:
Ver original
  1. var privateMethod = function(t)
  2. {
  3.     t.getClientInfo();
  4. };

llamada a funcion privada desde dentro de la clase:

Código javascript:
Ver original
  1. var privateVar = privateMethod(this);

llamada a funcion publica desde fuera de la clase:
Código javascript:
Ver original
  1. var a = new clientInfo();
  2.     a.getClientInfo();

Pero mejor lo vemos con un ejemplo:

Ejemplo corto:
Código javascript:
Ver original
  1. var clientInfo = function()
  2.         {  
  3.             clientInfo.prototype.getClientInfo = function()
  4.             {
  5.                 var a = new Array();               
  6.                 a['browser'] = this.getBrowser();  
  7.                 return a;
  8.             }  
  9.             clientInfo.prototype.getBrowser = function()           
  10.             {
  11.                 var a = 'default';
  12.                 if(/Opera/.test(navigator.appName))            
  13.                     a = 'opera';               
  14.                 else if(/Microsoft Internet Explorer/.test(navigator.appName))             
  15.                     a = 'msie';    
  16.                 return a;
  17.             }                      
  18.             clientInfo.prototype.main = function()
  19.             {
  20.                 var a = this.getClientInfo();
  21.                 return a;
  22.             }          
  23.             var privateMethod = function(t)
  24.             {
  25.                 var a = new Array();
  26.                 a['browser'] = t.getBrowser();
  27.                 return a;
  28.             };
  29.            
  30.             var privateVar = privateMethod(this);
  31.             alert("Private info: "+privateVar['browser']);
  32.            
  33.             this.publicVar = this.main();
  34.         };
  35.         var a = new clientInfo();
  36.         alert("Public info: "+a.publicVar['browser']);

Ejemplo largo:
Código javascript:
Ver original
  1. var clientInfo = function()
  2.         {  
  3.             clientInfo.prototype.getClientInfo = function()
  4.             {
  5.                 var a = new Array();               
  6.                 a['browser'] = this.getBrowser();  
  7.                 a['motor'] = this.getMotor();
  8.                 a['so'] = this.getSO();
  9.                 return a;
  10.             }  
  11.             clientInfo.prototype.getBrowser = function()           
  12.             {
  13.                 var a = 'default';
  14.                 if(/Opera/.test(navigator.appName))            
  15.                     a = 'opera';               
  16.                 else if(/Microsoft Internet Explorer/.test(navigator.appName))             
  17.                     a = 'msie';
  18.                 else if(/Iron/.test(navigator.appVersion))
  19.                     a = 'iron';
  20.                 else if(/Chrome/.test(navigator.appVersion))
  21.                     a = 'chrome';                  
  22.                 else if(/Konqueror/.test(navigator.appVersion))
  23.                     a = 'konqueror';                   
  24.                 else if(/Safari/.test(navigator.appVersion))
  25.                     a = 'safari';                  
  26.                 else if(/Firefox/.test(navigator.userAgent))
  27.                     a = 'firefox';
  28.                 else if(/Iceweasel/.test(navigator.userAgent))
  29.                     a = 'iceweasel';                   
  30.                 return a;
  31.             }
  32.             clientInfo.prototype.getMotor = function()         
  33.             {
  34.                 var a = 'default';
  35.                 if(/Opera/.test(navigator.appName))            
  36.                     a = 'opera';               
  37.                 else if(/Microsoft Internet Explorer/.test(navigator.appName))             
  38.                     a = 'msie';
  39.                 else if(/WebKit/.test(navigator.userAgent))
  40.                     a = 'webkit';
  41.                 else if(/KHTML/.test(navigator.userAgent))
  42.                     a = 'khtml';                   
  43.                 else if(/Gecko/.test(navigator.userAgent))
  44.                     a = 'gecko';                   
  45.                 return a;
  46.             }          
  47.             clientInfo.prototype.getSO = function()        
  48.             {
  49.                 var a = 'default';
  50.                 if(/Windows/.test(navigator.userAgent))
  51.                     a = 'windows';
  52.                 else if(/Linux/.test(navigator.userAgent))
  53.                     a = 'linux';                   
  54.                 return a;
  55.             }              
  56.             clientInfo.prototype.main = function()
  57.             {
  58.                 var a = this.getClientInfo();
  59.                 return a;
  60.             }          
  61.             var privateMethod = function(t)
  62.             {
  63.                 var a = new Array();
  64.                 a['browser'] = t.getBrowser();
  65.                 a['motor'] = t.getMotor();
  66.                 a['so'] = t.getSO();
  67.                 return a;
  68.             };
  69.            
  70.             var privateVar = privateMethod(this);
  71.             alert("Private info: "+privateVar['browser']+" "+privateVar['motor']+" "+privateVar['so']);
  72.            
  73.             this.publicVar = this.main();
  74.         };
  75.         var a = new clientInfo();
  76.         alert("Public info: "+a.publicVar['browser']+" "+a.publicVar['motor']+" "+a.publicVar['so']);

espero vuestros comentarios y sugerencias, muchas gracias, eskerrik asko.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan

Última edición por ZiTAL; 02/12/2008 a las 02:46
  #2 (permalink)  
Antiguo 27/11/2008, 10:10
Avatar de marcopoloaz06  
Fecha de Ingreso: julio-2007
Ubicación: México
Mensajes: 457
Antigüedad: 16 años, 9 meses
Puntos: 11
Respuesta: ejemplo Clase Javascript

Hola, ps puedes mejorar los métodos privados así:
Código javascript:
Ver original
  1. var privateMethod = function()
  2.             {
  3.                 var a = new Array();
  4.                 a['browser'] = this.getBrowser();
  5.                 return a;
  6.             };
  7.            
  8. var privateVar = privateMethod.call(this);

utilizando call()
saludos
:]
__________________
Aerolíneas Alicia :D
  #3 (permalink)  
Antiguo 27/11/2008, 10:24
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
De acuerdo Respuesta: ejemplo Clase Javascript

Muchas gracias ;)

Ejemplo corto:
Código javascript:
Ver original
  1. var clientInfo = function()
  2.         {    
  3.             clientInfo.prototype.getClientInfo = function()
  4.             {
  5.                 var a = new Array();                
  6.                 a['browser'] = this.getBrowser();    
  7.                 return a;
  8.             }    
  9.             clientInfo.prototype.getBrowser = function()            
  10.             {
  11.                 var a = 'default';
  12.                 if(/Opera/.test(navigator.appName))                
  13.                     a = 'opera';                
  14.                 else if(/Microsoft Internet Explorer/.test(navigator.appName))                
  15.                     a = 'msie';        
  16.                 return a;
  17.             }                        
  18.             clientInfo.prototype.main = function()
  19.             {
  20.                 var a = this.getClientInfo();
  21.                 return a;
  22.             }            
  23.             var privateMethod = function()
  24.             {
  25.                 var a = new Array();
  26.                 a['browser'] = this.getBrowser();
  27.                 return a;
  28.             };
  29.            
  30.             var privateVar = privateMethod.call(this);
  31.             alert("Private info: "+privateVar['browser']);
  32.            
  33.             this.publicVar = this.main();
  34.         };
  35.         var a = new clientInfo();
  36.         alert("Public info: "+a.publicVar['browser']);

Ejemplo largo:

Código javascript:
Ver original
  1. var clientInfo = function()
  2.         {  
  3.             clientInfo.prototype.getClientInfo = function()
  4.             {
  5.                 var a = new Array();               
  6.                 a['browser'] = this.getBrowser();  
  7.                 a['motor'] = this.getMotor();
  8.                 a['so'] = this.getSO();
  9.                 return a;
  10.             }  
  11.             clientInfo.prototype.getBrowser = function()           
  12.             {
  13.                 var a = 'default';
  14.                 if(/Opera/.test(navigator.appName))            
  15.                     a = 'opera';               
  16.                 else if(/Microsoft Internet Explorer/.test(navigator.appName))             
  17.                     a = 'msie';
  18.                 else if(/Iron/.test(navigator.appVersion))
  19.                     a = 'iron';
  20.                 else if(/Chrome/.test(navigator.appVersion))
  21.                     a = 'chrome';                  
  22.                 else if(/Konqueror/.test(navigator.appVersion))
  23.                     a = 'konqueror';                   
  24.                 else if(/Safari/.test(navigator.appVersion))
  25.                     a = 'safari';                  
  26.                 else if(/Firefox/.test(navigator.userAgent))
  27.                     a = 'firefox';
  28.                 else if(/Iceweasel/.test(navigator.userAgent))
  29.                     a = 'iceweasel';                   
  30.                 return a;
  31.             }
  32.             clientInfo.prototype.getMotor = function()         
  33.             {
  34.                 var a = 'default';
  35.                 if(/Opera/.test(navigator.appName))            
  36.                     a = 'opera';               
  37.                 else if(/Microsoft Internet Explorer/.test(navigator.appName))             
  38.                     a = 'msie';
  39.                 else if(/WebKit/.test(navigator.userAgent))
  40.                     a = 'webkit';
  41.                 else if(/KHTML/.test(navigator.userAgent))
  42.                     a = 'khtml';                   
  43.                 else if(/Gecko/.test(navigator.userAgent))
  44.                     a = 'gecko';                   
  45.                 return a;
  46.             }          
  47.             clientInfo.prototype.getSO = function()        
  48.             {
  49.                 var a = 'default';
  50.                 if(/Windows/.test(navigator.userAgent))
  51.                     a = 'windows';
  52.                 else if(/Linux/.test(navigator.userAgent))
  53.                     a = 'linux';                   
  54.                 return a;
  55.             }              
  56.             clientInfo.prototype.main = function()
  57.             {
  58.                 var a = this.getClientInfo();
  59.                 return a;
  60.             }          
  61.             var privateMethod = function()
  62.             {
  63.                 var a = new Array();
  64.                 a['browser'] = this.getBrowser();
  65.                 a['motor'] = this.getMotor();
  66.                 a['so'] = this.getSO();
  67.                 return a;
  68.             };
  69.            
  70.             var privateVar = privateMethod.call(this);
  71.             alert("Private info: "+privateVar['browser']+" "+privateVar['motor']+" "+privateVar['so']);
  72.            
  73.             this.publicVar = this.main();
  74.         };
  75.         var a = new clientInfo();
  76.         alert("Public info: "+a.publicVar['browser']+" "+a.publicVar['motor']+" "+a.publicVar['so']);
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan

Última edición por ZiTAL; 02/12/2008 a las 02:47
  #4 (permalink)  
Antiguo 27/11/2008, 10:27
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
De acuerdo Respuesta: ejemplo Clase Javascript

marcopoloaz06 y si quieres pasarle parametros a la funcion privada pero a su vez tambien el objeto this, como sería?
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #5 (permalink)  
Antiguo 27/11/2008, 10:40
Avatar de marcopoloaz06  
Fecha de Ingreso: julio-2007
Ubicación: México
Mensajes: 457
Antigüedad: 16 años, 9 meses
Puntos: 11
Respuesta: ejemplo Clase Javascript

aaaaa ps se pasa despues de el this

Código javascript:
Ver original
  1. function.call( this, p1, p2, p3 );
o puedes usar apply
Código javascript:
Ver original
  1. function.apply( this, [p1, p2, p3] );

y así
:]
__________________
Aerolíneas Alicia :D
  #6 (permalink)  
Antiguo 27/11/2008, 14:45
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ejemplo Clase Javascript

No quiero volver a retomar la discusión sobre "clases" y Javascript pero ampliando un poco el ejemplo que pones, si hacemos:

Código javascript:
Ver original
  1. var clientInfo = function() {    
  2.     // Todo igual a lo que tienes...
  3.     // ...
  4. };
  5. var a = new clientInfo();
  6. var b = new clientInfo();
  7. b.pez = function() { return "blub, blub"; };

¿Qué diríamos que es b.pez()?
  #7 (permalink)  
Antiguo 02/12/2008, 02:42
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: ejemplo Clase Javascript

¿Un metodo dinámico? Es bastante curioso pero funciona:

Código javascript:
Ver original
  1. var b = new clientInfo();
  2. b.pez = function() { return "blub, blub"; };
  3. alert(b.pez());
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #8 (permalink)  
Antiguo 02/12/2008, 03:10
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ejemplo Clase Javascript

Uhm... no sé muy bien a qué te refieres con un método dinámico, pero fíjate que puedo también hacer esto:

Código javascript:
Ver original
  1. var clientInfo = function() {    
  2.     // Todo igual a lo que tienes...
  3.     // ...
  4. };
  5. var a = new clientInfo();
  6. var b = new clientInfo();
  7. b.pez = function() { return "blub, blub"; };
  8. b.getBrowser = function() { return "Ha, ha, no browser for you!"; };
  9.  
  10. alert("a.getBrowser: " + a.getBrowser());
  11. alert("b.getBrowser: " + b.getBrowser());

Y ahora ¿qué es el método getBrowser?
  #9 (permalink)  
Antiguo 02/12/2008, 03:32
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: ejemplo Clase Javascript

y si hacemos:
Código javascript:
Ver original
  1. var clientInfo = '';
  2.  
  3. function abc()
  4. {
  5.     alert('hola');
  6. }
  7.        
  8. function abc()
  9. {
  10.     alert('adios');
  11. }
  12. abc();
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #10 (permalink)  
Antiguo 02/12/2008, 03:54
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ejemplo Clase Javascript

Pero mi ejemplo tiene un detalle más allá de la trivialidad de sobreescribir el método: Supuestamente, si usamos la terminología de "clases", tanto a como b son de la misma clase, ¿no? Pero resulta que tienen diferentes métodos...

A lo que quiero llegar es a que clientInfo no es una "clase", sino una "función generadora" y que Javascript tiene orientación a objetos basada en prototipos y no basada en clases.

Última edición por venkman; 02/12/2008 a las 04:00
  #11 (permalink)  
Antiguo 02/12/2008, 04:05
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: ejemplo Clase Javascript

ya te ha costado chico, muchas gracias por la aclaración. Se veia que no era una clase pura ya que por algo empieza con function ;)

Alguna otra anotacion, sugerencia como hacerlo etc...?
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #12 (permalink)  
Antiguo 18/01/2010, 18:18
 
Fecha de Ingreso: enero-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: ejemplo Clase Javascript

Cita:
Iniciado por marcopoloaz06 Ver Mensaje
Hola, ps puedes mejorar los métodos privados así:
Código javascript:
Ver original
  1. var privateMethod = function()
  2.             {
  3.                 var a = new Array();
  4.                 a['browser'] = this.getBrowser();
  5.                 return a;
  6.             };
  7.            
  8. var privateVar = privateMethod.call(this);

utilizando call()
saludos
:]
Buenas Noches.
Leyendo en este foro conseguí el siguiente código para respaldar bases de datos en php y me funciona perfecto.
<?php
function Connect($host,$user,$passwd)
{
if(!($link=mysql_connect($host,$user,$passwd)))
{
echo "Error connecting to DDBB.";
exit();
}
return $link;
}
$link=Connect('localhost','root','root');
//
if($_POST['submit'])
{
$db=$_POST['db'];
$output=shell_exec("d:\apps\mysql-5.0.45-win32\bin\mysqldump.exe -u root -proot ".$db); // ejemplo windows
//$output=shell_exec("/usr/bin/mysqldump -u root -proot ".$db); // ejemplo linux
//
if(trim($output)==NULL)
{
echo "Error creando el backup de la DB: ".$db;
exit();
}
header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="'.$db.'.sql"');
echo $output;
exit();
}
$select="show databases";
$select=mysql_query($select);
?>
<html>
<head>
</head>
<body>
<form action="" method="post">
<select name="db">
<?php
while($row = mysql_fetch_row($select))
{
?>
<option value="<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option>
<?php
}
?>
</select>
<input type="submit" name="submit" value="Crear backup" />
</form>
</body>
</html>

Ahora, necesito si puedes el código para restaurar el respaldo realizado.

te agradezco la ayuda que puedas prestarme

Saludos
Eberth Briceño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 11:37.