我试图在对象中创建对对象的引用,而不是创建对象的副本。我对引用还是复制感到困惑。令我困惑的是:
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?为什么即使在删除原始对象之后,引用仍然有效?如果我误解引用,如何确保删除原始对象,使所有引用不再工作?我可能错过了一些基本的东西,我感谢任何人的帮助!
发布于 2022-01-28 20:22:54
delete不会物理地从内存中删除对象。它只从master中删除该属性。由于您仍然在引用变量中的对象,而且您的变量还没有超出作用域,所以该对象仍然驻留在内存中。
每MDN
JavaScript
delete运算符从对象中移除属性。
https://stackoverflow.com/questions/70899837
复制相似问题