在Object Javascript Confusion中引用Object



我试图在对象中创建对对象的引用,而不是创建它的副本。我对引用和副本感到困惑。让我困惑的是:

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?

为什么即使删除了原始对象,引用仍然有效?如果我误解了引用,我如何确保原始对象被删除,从而使所有引用不再工作?我可能错过了一些基本的东西,我很感激任何人的帮助!

delete不会从内存中物理删除对象。它仅从master中删除该属性。由于您仍然在引用变量中的对象,并且变量没有超出范围,因此对象仍然驻留在内存中。

每个MDN:

JavaScriptdelete运算符从对象中删除属性

最新更新