Avatar ·

如何在JavaScript中正确克隆对象:浅拷贝与深拷贝

大家好!我刚开始学习JavaScript,遇到了一个让我困惑的问题。当我将一个对象赋值给另一个对象时,它们似乎被关联起来了。修改副本时,原对象也会被修改。例如: ```javascript let user = { name: "Иван", age: 30 }; let clone = user; clone.name = "Петр"; console.log(user.name); // 输出 "Петр",而我期望的是 "Иван" ``` 我知道在JavaScript中对象是通过引用传递的,但如何制作一个真正独立的副本呢?我尝试过 `Object.assign()`,但似乎它并不总是正确工作,尤其是当对象内部包含其他对象时: ```javascript let user = { name: "Анна", address: { city: "Москва", street: "Тверская" } }; let clone = Object.assign({}, user); clone.address.city = "СПб"; console.log(user.address.city); // 输出 "СПб" — 原对象又被修改了! ``` 有没有办法进行完整的深拷贝?是否有内置方法,还是需要自己编写函数?