DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Paracetamol.js馃拪| #70: Explica este c贸digo JavaScript

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);
Enter fullscreen mode Exit fullscreen mode

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.


Discussion (3)

Collapse
duxtech profile image
Cristian Fernando Author • Edited on

Respuesta:
A. true, false, 15, 10

Al 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 objeto1 estamos reservando un espacio en memoria para guardar dicho objeto.
Cuando asignamos objeto1 a objeto2 lo 煤nico que hacemos es que ambos objetos apunten a la misma direcci贸n de memoria donde esta almacenado el objeto1. En otras palabras, tanto objeto1 y objeto2 no 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 == obtenemos true.

Pero si comparamos el objeto1 contra el objeto3 tendremos false puesto que si bien ambos tienen las mismas propiedades, estan almacenados en direcciones de memoria diferentes.

Para finalizar, cuando hacemos:

objeto1.valor = 15;
console.log(objeto2.valor);
console.log(objeto3.valor);
Enter fullscreen mode Exit fullscreen mode

Modificamos el valor de objeto1 pero como apuntan a la misma direcci贸n de momoria entonces tambi茅n modificamos el valor del objeto2 a 15.

El objeto3 no sufre ning煤n cambio.

Collapse
devfranpr profile image
DevFranPR

Si objeto3 no sufre cambios como es que empieza a 10 y acaba a 20 (?) 驴No tendr谩s una errata en la redacci贸n?

Collapse
duxtech profile image
Cristian Fernando Author

Muchas gracias por darte cuenta, efectivamente es fue un error mio de redacci贸n que ya esta arreglado. Un saludo