【发布时间】:2020-11-07 12:54:05
【问题描述】:
请看下面的例子:
const obj = { a: {} }
let aOfObj = obj.a
console.log(obj.a === aOfObj)
aOfObj.b = 4
console.log(obj.a.b === aOfObj.b)
aOfObj = {}
console.log(obj.a === aOfObj)
所以aOfObj 是对obj.a 的引用。将aOfObj.b 设置为4 证明了这一点。原始对象的obj.a.b 也已修改。那么为什么设置aOfObj = {} 与设置obj.a = {} 不一样呢?
【问题讨论】:
-
为此,您需要 C++ 中所谓的双指针
-
因为你改变了 aOfObj 引用的内容,你并没有改变 obj.a 引用的内容——它仍然引用了之前的对象。
-
“所以
aOfObj是对obj.a的引用” -aOfObj存储“地址”,其中obj.a可以在内存中找到。 “那么为什么要设置aOfObj = {}...” - 这只是在aOfObj中存储另一个地址。 -
这与
foo = 0; foo = 42;的工作方式完全相同,您没有将 0 更改为 42,但您正在更改变量foo的内容
标签: javascript