Javascript 如何在不发生突变的情况下改变对象内部的对象?

Javascript 如何在不发生突变的情况下改变对象内部的对象?,javascript,object,ecmascript-6,Javascript,Object,Ecmascript 6,所以我的问题是如何在用户对象中更改petNames对象而不改变它 const user = { name: 'Harry', age: 50, petNames: { dog: 'Lisie', cat: 'Foxer' } }; 第一级,我们可以像这样改变 {...user, age: 48 } 它会回来的 { name: 'Harry', age: 48,

所以我的问题是如何在用户对象中更改petNames对象而不改变它

const user = { 
        name: 'Harry', 
        age: 50, 
        petNames: { 
         dog: 'Lisie', 
         cat: 'Foxer' 
        } 
    };
第一级,我们可以像这样改变

{...user, age: 48 }
它会回来的

{ 
 name: 'Harry', 
 age: 48, 
 petNames: { 
    dog: 'Lisie', 
    cat: 'Foxer' 
 } 
};
但是我怎样才能改变宠物的名字呢

例如,将狗名更改为“Rex”

然后得到一个像

{ 
 name: 'Harry', 
 age: 50, 
 petNames: { 
    dog: 'Rex', 
    cat: 'Foxer' 
 } 
};

谢谢大家!

您还可以扩展内部属性:

常量用户={ 名字:'哈利', 年龄:50,, 宠物名称:{ 狗:“莉西”, 猫:“狐狸” } }; 常量newUser={ 使用者 宠物名称:{ …user.petNames, 狗:“雷克斯” } };
console.loguser.petNames===newUser.petNames;//false您还可以传播内部属性:

常量用户={ 名字:'哈利', 年龄:50,, 宠物名称:{ 狗:“莉西”, 猫:“狐狸” } }; 常量newUser={ 使用者 宠物名称:{ …user.petNames, 狗:“雷克斯” } };
console.loguser.petNames===newUser.petNames;//如果不更改对象,则无法更改它。您可能正在搜索如果不更改对象,则无法更改该对象。您可能正在搜索