美文网首页
对象深拷贝浅拷贝

对象深拷贝浅拷贝

作者: 楼水流云 | 来源:发表于2019-10-08 15:10 被阅读0次

    基本赋值
    var a = 1
    var b = a
    a = 2
    b == 1

    var obj = {age:100}
    var obj2 = obj
    obj.age = 200
    obj2.age == 200

    浅拷贝只拷贝一层 用遍历 创建一个新对象赋值
    var obj = {age:100,friend:{name:'ruoyu',sex:'male'}}

    function shadiwCopy(obj){
    var newobj = {}
    for(var key in obj){
    newobj[key] = obj[key]
    }
    return newobj
    }
    var obj3 = shadowCopy(obj)
    obj3.age = 400
    console.log(obj3)

    深拷贝用递归
    var obj = {age:100,friend:{name:'ruoyu',sex:'male'}}

    function copy(obj){
    var newobj = {}
    for(var key in obj){
    if(!obj.hasIwnProperty(key)){
    if(typeof obj[key] === 'number' || typeof obj[key] === 'boolean'
    || typeof obj[key] === 'string' || typeof obj[key] === 'undefined'
    || typeof obj[key] === 'null')
    newobj[key] = obj[key]
    }else{
    newobj[key] = copy(obj[key])
    }
    }
    return newobj
    }
    var obj3 = copy(obj)
    obj3.age = 400
    console.log(obj3)

    JSON深拷贝
    JSON深拷贝 解析成对象 再作一个赋值 JSON.stringify()把对象转化成字符串 JSON.parse()把字符串重新生成一个对象
    JSON.parse(JSON.stringify(要拷贝的对象))

    相关文章

      网友评论

          本文标题:对象深拷贝浅拷贝

          本文链接:https://www.haomeiwen.com/subject/opqcpctx.html