什么是深拷贝和浅拷贝?

一浅拷贝:

1.(1)

  var arr=[1,2,3]

  var arr1=arr

  这个就是简单的浅拷贝   但是:如果要改变arr1所引用的数据:arr1[0]=100时,那么arr[0]的值也是100。

(2)Object.assign()

  var obj = { a: {a: "hello", b: 21} }; 

  var obj1 = Object.assign({}, obj); 
  obj1.a.a = "changed"
  console.log(obj.a.a); // "changed"

2.用json对象方式

  var obj={

      a:'1',

      b:'2',

      list:[a,b,c]

    }

  var obj2={}

  for(let key in obj){

    obj2[key]=obj[key]

  }

  obj2.list[0]=d

  那么输出结果就是:{a:'1',b:'2',list:[d,b,c]}

二深拷贝

  1.JSON.parse(JSON.stringify(arr))

  2.递归拷贝

    function isObj(obj) {

      return (typeof obj === 'object' || typeof obj === 'function') && obj !== null
    }
    function Copy(obj) {
     let tempObj = Array.isArray(obj) ? [] : {}
     for(let key in obj) {
      tempObj[key] = isObj(obj[key]) ? deepCopy(obj[key]) : obj[key]
     }
     return tempObj
    }
  3.$.extend()
  使用:
  var obj={
    name:'www',
    age:'10'
  }
  $.extend(true,$,obj);
  $.name="张三"
  $.age="20"
  输出结果:obj ={name:"张三",age:"20"}

    

 

  

posted @ 2021-04-22 18:17  two-fish  阅读(248)  评论(0)    收藏  举报