即使克隆了对象,为什么Object.values仍保留其父对象的引用?

问题描述 投票:-1回答:1

假设您有一个object obj = { a : [1, 2] },并为其创建一个副本objClone = Object.assign({}, obj),然后在修改Object.values(objClone)[0] [1]时,父obj也将被修改。有人可以解释为什么吗?

javascript reactjs ecmascript-5
1个回答
0
投票

输入:

let objA = { a : [1, 2] }

objA.a的值是对由数组文字创建的数组的引用。因此,当您复制对象时:

let objB = Object.assign({}, objA)

然后objB.a的值是objA.a的值的副本,因此是对同一数组的引用。

[通常被称为“浅表副本”,也就是说,它只是值的简单副本,没有解析引用以复制其引用的任何内容。

[执行时:

console.log(objA.a)

然后解析引用,以便它打印数组的内容,而不是引用的实际值(这将有点用处。)]

© www.soinside.com 2019 - 2024. All rights reserved.