Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/08/2011, 07:08
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 6 meses
Puntos: 834
Respuesta: Problema herencia con prototipos

Cita:
¿por que se comporta diferente cuando se usan objetos de notación literal, en vez de variables?.
Es una característica del lenguaje. Una vez que se sabe esto, la solución es sencilla.
De la misma forma en que esto:
Código PHP:
<script type="text/javascript">
var 
a={b:2}
var 
c=a;
c.b=9;
alert(a.b);//9
</script> 
Puede solucionarse así:
Código PHP:
<script type="text/javascript">
var 
a={b:2}
var 
c=a;
c={b:9};
alert(a.b);//2
</script> 
Esto (y lo mismo tu ejemplo):
Código PHP:
<script type="text/javascript">
function 
uno(){
    
this.b={a:2};    
}
uno.prototype.setB=function(x){this.b.a=x}
function 
dos(){}
dos.prototype=new uno;
var 
z=new dos;
var 
x=new dos;
z.setB(5)
alert(z.b.a);
alert(x.b.a);
</script> 
Puede solucionarse así:
Código PHP:
<script type="text/javascript">
function 
uno(){
    
this.b={a:2};    
}
uno.prototype.setB=function(x){this.b={a:x};}
function 
dos(){}
dos.prototype=new uno;
var 
z=new dos;
var 
x=new dos;
z.setB(5)
alert(z.b.a);
alert(x.b.a);
</script>