假设我有这个对象:
const obj = {
a: {
b: {
c: {
d: 'hi'
}
},
g: 23
},
f: {
e: [1,2]
}
}
要在不更改变量的情况下更改变量“ d”,将这样做:
const newObj = {...obj};
newObj.a.b.c.d = 'Bye';
return newObj;
工作吗?
这是关于redux ...
答案 0 :(得分:3)
否 –使用扩展运算符obj
进行扩展时,只会复制...
的第一级属性。
这称为浅拷贝,而不是深拷贝。
const obj = {
a: {
b: {
c: {
d: "hi"
}
},
g: 23
},
f: {
e: [1, 2]
}
};
const newObj = { ...obj };
newObj.a.b.c.d = "Bye";
console.log(obj.a.b.c.d); // Bye
答案 1 :(得分:1)
正如@ASDFGerge所提到的,您应该使用它来真正内部化它。
但是简短的答案是“否”,您的副本'keyWindow' was deprecated in iOS 13.0: Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes
仅深1层。更改newObj
不会修改原始文档,但是更改newObj.a
(或更进一步的内容)将会
newObj.a.b