<html>
<head>
    <title></title>
</head>
<body>
<script type="text/javascript">
function copy(arr){
    var obj=arr.constructor==Array?[]:{};
  //第二种方法 var obj=arr instanceof Array?[]:{}
    for(var item in arr){
        if(typeof arr[item]==="object"){
            obj[item]=copy(arr[item]);
        }else{
            obj[item]=arr[item];
        }
    }
    return obj;
}
var obj={a:1,b:2,c:{d:1,e:[3,4,5]}}
var newobj=copy(obj);
obj.c.e.push(7);
console.log(obj);
console.log(newobj);
</script>
</body>
</html>

深拷贝的原生js实现

上面代码中有测试输出原对象和深拷贝到newobj上的新对象,如果深拷贝成功的话,obj里面的引用类型改变值,是不会影响到新对象的。以下是在控制台打印的结果:

深拷贝的原生js实现

果然obj和newobj的引用类型互相没有影响,而不像浅拷贝那样引用类型共享。

相关文章:

  • 2021-09-16
  • 2017-12-14
  • 2018-12-10
  • 2021-03-31
  • 2021-09-23
  • 2021-08-27
  • 2021-11-23
  • 2018-02-05
猜你喜欢
  • 2021-04-18
  • 2021-08-24
  • 2021-10-03
  • 2021-08-12
  • 2020-05-06
  • 2019-03-05
  • 2019-06-29
相关资源
相似解决方案