Avatar ·

如何在JavaScript中正确克隆对象?Object.assign和展开运算符的问题

大家好!我是JavaScript新手,在复制对象时遇到了问题。 我有一个包含嵌套数据的 `user` 对象: ```javascript const user = { name: '伊万', age: 30, address: { city: '莫斯科', street: '特维尔大街', coordinates: { lat: 55.76, lng: 37.62 } }, hobbies: ['编程', '国际象棋'] }; ``` 我尝试创建这个对象的副本,但遇到了意外行为。当我使用 `Object.assign` 或展开运算符时,对嵌套对象的修改会影响原始对象: ```javascript const clone1 = Object.assign({}, user); const clone2 = { ...user }; clone1.address.city = '圣彼得堡'; console.log(user.address.city); // '圣彼得堡' — 原始对象也改变了! clone2.hobbies.push('阅读'); console.log(user.hobbies); // ['编程', '国际象棋', '阅读'] — 又改变了! ``` 我了解到这叫做“浅拷贝”。如何进行深拷贝?