ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

浅拷贝与深拷贝

2022-03-20 20:35:15  阅读:186  来源: 互联网

标签:obj log newObj stu let console 拷贝


浅拷贝

let stu = {
    name:'xiaoming',
    age:10,
    bestFriend:{
        name:'zhangsan',
        age:25
    }
}


function copyObject(obj){
    let newObj = {};
    for (let i in obj){
        newObj[i] = obj[i]
    }
    return newObj
}
let  newStu = copyObject(stu)

console.log(stu)
console.log(newStu)
console.log(stu === newStu)//false

深拷贝

两种方式

  1. 递归

    let stu = {
        name:'xiaoming',
        age:10,
        bestFriend:{
            name:'zhangsan',
            age:25
        }
    }
    
    function copyObjects(obj){
        let newObj = {};
        for (let i in obj){
            if (obj[i] instanceof Object){
                newObj[i] = copyObjects(obj[i]);
            }else{
                newObj[i] = obj[i]
            }
        }
        return newObj
    }
    let  newStu2 = copyObjects(stu)
    stu.bestFriend.name = 'lisi'
    console.log(stu)
    console.log(newStu2)
    console.log(stu === newStu2)
    
  2. 转JSON

    let stu = {
        name:'xiaoming',
        age:10,
        bestFriend:{
            name:'zhangsan',
            age:25
        }
    }
    
    function copyObjects(obj){
    
        let newStr = JSON.stringify(obj);
        let newObj = JSON.parse(newStr);
        return newObj
    }
    let  newStu2 = copyObjects(stu)
    stu.bestFriend.name = 'lisi'
    console.log(stu)
    console.log(newStu2)
    console.log(stu === newStu2)
    

标签:obj,log,newObj,stu,let,console,拷贝
来源: https://www.cnblogs.com/warm-px/p/16031350.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有