Explica este código JavaScript
let objeto1 = { valor: 10 };
let objeto2 = objeto1;
let objeto3 = { valor: 10 };
console.log(objeto1 == objeto2);
console.log(objeto1 == objeto3);
objeto1.valor = 15;
console.log(objeto2.valor);
console.log(objeto3.valor);
A. true, false, 15, 10
B. false, true, 10, 20
C. true, true, 15, 20
D. false, false, 20, 15
Respuesta en el primer comentario.
Top comments (3)
Respuesta:
A.
true,false,15,10Al trabajar con objetos en javascript hay que difereciar 2 aspectos fundamentales: tener 2 referencias la mismo objeto y tener 2 objetos diferentes pero con las mismas propiedades.
Al crear
objeto1estamos reservando un espacio en memoria para guardar dicho objeto.Cuando asignamos
objeto1aobjeto2lo único que hacemos es que ambos objetos apunten a la misma dirección de memoria donde esta almacenado elobjeto1. En otras palabras, tantoobjeto1yobjeto2no son independientes el uno del otro, si modificamos uno el otro también se vera afectado.Como ambos apuntan a la misma dirección de memoria entonces al usar el operador débil de comparación
==obtenemostrue.Pero si comparamos el
objeto1contra elobjeto3tendremosfalsepuesto que si bien ambos tienen las mismas propiedades, estan almacenados en direcciones de memoria diferentes.Para finalizar, cuando hacemos:
Modificamos el
valordeobjeto1pero como apuntan a la misma dirección de momoria entonces también modificamos el valor delobjeto2a15.El
objeto3no sufre ningún cambio.Si objeto3 no sufre cambios como es que empieza a 10 y acaba a 20 (?) ¿No tendrás una errata en la redacción?
Muchas gracias por darte cuenta, efectivamente es fue un error mio de redacción que ya esta arreglado. Un saludo