Avatar ·

JavaScript中深度克隆对象的最有效方法

大家好!我是JavaScript新手,在复制对象时遇到了问题。我需要创建一个独立的对象副本,这样对副本的修改不会影响原始对象。\n\n以下是我的代码示例,它不起作用:\n\n```javascript\nconst original = {\n name: '安娜',\n age: 25,\n address: {\n city: '莫斯科',\n street: '列宁大街'\n },\n hobbies: ['阅读', '运动']\n};\n\nconst copy = original;\ncopy.name = '玛丽亚';\ncopy.address.city = '圣彼得堡';\n\nconsole.log(original.name); // '玛丽亚' — 改变了!\nconsole.log(original.address.city); // '圣彼得堡' — 也改变了!\n```\n\n我尝试使用了`Object.assign()`和spread运算符:\n\n```javascript\nconst copy2 = Object.assign({}, original);\nconst copy3 = {...original};\n\ncopy2.address.city = '喀山';\nconsole.log(original.address.city); // '喀山' — 又改变了!\n```\n\n问题在于嵌套对象和数组是通过引用复制的。我听说过`JSON.parse(JSON.stringify())`,但据说它