Foros del Web » Programando para Internet » Javascript »

[PROBLEMA] Sobreescritura de valores

Estas en el tema de [PROBLEMA] Sobreescritura de valores en el foro de Javascript en Foros del Web. Buenas. Veran, tengo el siguiente codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original var Tester ; var Tester2 ;   Tester = {     ...
  #1 (permalink)  
Antiguo 29/06/2017, 22:06
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
[PROBLEMA] Sobreescritura de valores

Buenas.

Veran, tengo el siguiente codigo:
Código Javascript:
Ver original
  1. var Tester;
  2. var Tester2;
  3.  
  4. Tester = {
  5.    
  6.     Funcion: function(){
  7.         Tester2 = this.Valores.Altos;
  8.     },
  9.  
  10.     Valores: {
  11.         Bajos: {
  12.             valor: 250
  13.         },
  14.         Medios: {
  15.             valor: 350
  16.         },
  17.         Altos: {
  18.             valor: 600
  19.         }
  20.     }
  21.  
  22. }
  23.  
  24. Tester.Funcion();
  25. Tester2.valor = 0;
  26. console.log(Tester2.valor); // 0.
  27. console.log(Tester.Valores.Altos.valor); // 0.

¿Eso esta bien?, no entiendo porque al modificar Tester2 también se modifica Tester, ¿Me lo explicarían?

Porque necesito tener un objeto "original" y una "copia", y quiero que la copia inicialmente sea igual que el objeto original, para así poder modificar la copia y no el original ¿Me explico?

Espero me ayuden, gracias de antemano!

Última edición por TrinityCore; 29/06/2017 a las 22:18
  #2 (permalink)  
Antiguo 30/06/2017, 00:48
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 9 años, 11 meses
Puntos: 10
Respuesta: [PROBLEMA] Sobreescritura de valores

Porque la asignación de objetos es por referencia, y no por valor, osea el objeto asignado es el mismo en Tester y en Tester2. Lo puedes solucionar así:

Código Javascript:
Ver original
  1. var Tester;
  2. var Tester2;
  3.  
  4. Tester = {
  5.    
  6.     Funcion: function(){
  7.         Tester2 = JSON.parse(JSON.stringify(this.Valores.Altos));
  8.     },
  9.  
  10.     Valores: {
  11.         Bajos: {
  12.             valor: 250
  13.         },
  14.         Medios: {
  15.             valor: 350
  16.         },
  17.         Altos: {
  18.             valor: 600
  19.         }
  20.     }
  21.  
  22. }

Saludos!
  #3 (permalink)  
Antiguo 30/06/2017, 14:34
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: [PROBLEMA] Sobreescritura de valores

Claro... entonces al hacer lo que yo hago, en realidad estoy creando una especie de "reflejo" del objeto original y no una copia real.

Muchas gracias por tu ayuda!

Etiquetas: Ninguno
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 14:21.