ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 深拷贝 >[warning]深拷贝是一层一层的拷贝,每一层都会独立开辟一个空间 <br> ```javascript // 深拷贝是一层一层的拷贝 // 定义个对象 var obj1 = { name: "wc", age: 3, like: ["吃饭", "睡觉", "打豆豆"], eat: { name: "麻辣烫", price: 2 } } // 创建个空的对象放拷贝过来的内容 var obj2 = {}; // 封装函数 function deepCopy(source, target) { // 循环遍历source for (var key in source) {//in 获取到的是私有属性跟公有属性 // 只需要私有属性,作判断 if (source.hasOwnProperty(key)) { // 判断是不是引用数据类型,是的话调用函数进行循环遍历拷贝(递归) if(typeof source[key] == "object"){ // 做判断,target是数组的话,定义个空数组存放属性,是对象的话定义个空对象存放 target[key] = Array.isArray ? [] : {}; // 调用函数,递归 deepCopy(source[key],target[key]); }else{ // 值类型数据 target[key] = source[key]; } } } } // 调用函数 deepCopy(obj1,obj2); // 查看对象的属性 console.log(obj2); // 修改obj2的值 obj2.eat.name = "烤肉"; console.log(obj1); ``` <br> ## 内存图 ![](https://img.kancloud.cn/b5/30/b5300c558872794db6dafa68b55b7e6e_937x684.png)