JavaScript中深度克隆对象的最有效方法
大家好!我是JavaScript新手,在复制对象时遇到了问题。我需要创建一个完全独立的副本,使得对副本的修改不会影响原始对象。但普通的赋值不起作用——副本只是引用了同一个对象。
以下是我的代码示例:
```javascript
const original = {
name: "Алиса",
age: 30,
address: {
city: "Москва",
zip: 101000
},
hobbies: ["чтение", "плавание"]
};
// 尝试复制
const copy = original;
copy.name = "Боб";
copy.address.city = "Санкт-Петербург";
console.log(original.name); // "Боб" — 哦,变了!
console.log(original.address.city); // "Санкт-Петербург" — 也变了!
```
我尝试过使用 `Object.assign()` 和 spread 操作符 `{...obj}`,但它们只创建浅拷贝。嵌套的对象和数组仍然保持关联。例如:
```javascript
const copy2 = {...original};
copy2.address.city = "Казань";
console.log(original.address