zoukankan      html  css  js  c++  java
  • 深拷贝

    1.递归

    var data = [1, 2, 3]
    var data2={"x":11,"y":22}

    var deepcopy = function(obj) {
    const t = typeof obj
    let o = Array.isArray(obj) ? [] : {}
    if(t === "object") {
    for(let i in obj) {
    o[i] = deepcopy(obj[i])
    }
    }else{
    return obj
    }
    return o;
    }

    var copyData = deepcopy(data)
    copyData[0] = 4
    var copyData2 = deepcopy(data2)
    copyData2.x = 4
    console.log(data)              //[1,2,3]
    console.log(copyData)      //[4,2,3]
    console.log(data2)            //{"x":11,"y":22}
    console.log(copyData2)    //{"x":4,"y":22}

    2.JSON对象的stringify和parse

    var deepcopy2 =function(obj){
    var str,reObj = Array.isArray(obj)?[]:{}
    if(window.JSON){
    str = JSON.stringify(obj);
    reObj =JSON.parse(str);
    }
    return reObj
    }

    var copyData = deepcopy2(data)
    copyData[0] = 4
    var copyData2 = deepcopy2(data2)
    copyData2.x = 4
    console.log(data)              //[1,2,3]
    console.log(copyData)      //[4,2,3]
    console.log(data2)            //{"x":11,"y":22}
    console.log(copyData2)    //{"x":4,"y":22}

  • 相关阅读:
    网页布局
    Block Formatting Context
    SEO初识
    新的一个月,就这么不知不觉的来临了
    Js结束,项目进行中
    JS学习中....
    ws快捷键
    Html的学习以及webstorm的使用
    从事前端开发应该了解的CSS原理
    jQuery动画
  • 原文地址:https://www.cnblogs.com/youngMe/p/11097040.html
Copyright © 2011-2022 走看看