Foros del Web » Programando para Internet » Javascript »

variables por referencia

Estas en el tema de variables por referencia en el foro de Javascript en Foros del Web. Alguien tiene algun ejemplo de variables por referencia en javascript?...
  #1 (permalink)  
Antiguo 26/07/2007, 08:00
 
Fecha de Ingreso: marzo-2006
Mensajes: 137
Antigüedad: 18 años, 8 meses
Puntos: 0
variables por referencia

Alguien tiene algun ejemplo de variables por referencia en javascript?
__________________
__Neurotic-Developer....:::: La unica limitacion de la programacion, es el programador.
  #2 (permalink)  
Antiguo 26/02/2008, 18:11
 
Fecha de Ingreso: septiembre-2005
Mensajes: 94
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: variables por referencia

Sí, por favor, yo también lo busco ;)
  #3 (permalink)  
Antiguo 26/02/2008, 21:02
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: variables por referencia

Si te referís a las referencias como se entienden en php, sólo se producen en arrays. En otros casos no, como puede verse aquí:
Código PHP:
<script>
var 
= [ 'a''b''c' ]; 
alert(a); //a,b,c
var a
alert(b); //a,b,c
b.push('d'); 
alert(b); //a,b,c,d
alert(a);//a,b,c,d->a se ha modificado al modificar b
c='hola';
alert(c)//hola
d=c;
alert(d)//hola
d='chau';
alert(d)//chau
alert(c)//hola->c no se modifica aunque hemos modificado d
</script> 
  #4 (permalink)  
Antiguo 27/02/2008, 13:27
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: variables por referencia

Hola:

También ocurre en los objetos, si no hacemos una copia explicita de todas sus propiedades las variables funcionan como el anterior ejemplo de Panino:

Código PHP:
function obj(x) {
    
this.x;
}

// Establecimiento
var foo = new obj(6);
var 
bar foo;
// Mostramos
alert("foo.x = "+foo.x);        // 6 como se espera
alert("bar.x = "+bar.x);        // 6 como se espera

// Cambio
bar.18;
// Mostramos
alert("foo.x = "+foo.x);        // 18 en vez de 6 ¡!
alert("bar.x = "+bar.x);        // 18 como se espera 
También ocurre exactamente igual con las variables que son funciones dentro de un objeto, al modificar una de un objeto, se modifican todas las de su copia:
Código PHP:
function obj(x) {
    
this.x;
    
this.cuadradoDeX = function() {
        
this.Math.pow(this.x2);
    }
}

// Establecimiento
var foo = new obj(6);
var 
bar foo;
// En este punto foo.x = bar.x, y además son la misma. También es lo mismo foo.cuadradoDeX que bar.cuadradoDeX
// Modifico, teoricamente sólo en bar
bar.cuadradoDeX = function() {
    
this.Math.pow(this.x3);
}
// En este punto es lo mismo foo.cuadradoDeX que bar.cuadradoDeX, las dos hacen el cubo, y las dos afectan a la misma x.

// ejecuto la modificada, pero afectará también a foo.
bar.cuadradoDeX();
// Mostramos
alert("foo.x = "+foo.x);        // 6^3=216, podríamos esperar 6^2 al no haber modificado foo.cuadradoDeX
alert("bar.x = "+bar.x);        // 6^3=216, como se espera 

Hay que tener un poquito de cuidado, pero se entiende rápido, sólo pasa en variables de Arrays o en Objets.


Saludos
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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




La zona horaria es GMT -6. Ahora son las 18:44.