Estoy tratando de crear una referencia a un objeto dentro de un objeto, en lugar de crear una copia del mismo. Estoy confundido acerca de la referencia frente a la copia. Lo que me confunde:
let master = {} master['SomeObject'] = {a:"Something",b:"something"} let subMaster = master['SomeObject'] subMaster['Test'] = true console.log(master['SomeObject']['Test']) //this WORKS as expected updating the original object delete master['SomeObject'] console.log(subMaster) //still shows content, and can continue to be manipulated? Shouldnt it show undefined?¿Por qué la referencia sigue funcionando incluso después de eliminar el objeto original? Si estoy malinterpretando las referencias, ¿cómo puedo asegurarme de que el objeto original se elimine para que todas las referencias dejen de funcionar? ¡Probablemente me estoy perdiendo algo fundamental y agradezco la ayuda de cualquiera!
delete no elimina físicamente el objeto de la memoria. Solo elimina esa propiedad del master . Dado que todavía está haciendo referencia al objeto desde su variable, y su variable no ha quedado fuera del alcance, el objeto aún reside en la memoria.
Por MDN :
El operador de
deletede JavaScript elimina una propiedad de un objeto