js深拷贝和浅拷贝

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js深拷贝和浅拷贝相关的知识,希望对你有一定的参考价值。

数组的浅拷贝

var arr = ["One","Two","Three"];
var arr2 = arr;
这便是浅拷贝,此时改变arr2数组中任意一项的值,原数组中的原始值也会跟着改变,这是因为将对象赋值给一个变量,仅仅是赋值的引用值,对象本身并有复制一次。

深拷贝方法

方法一:js的slice函数 

var arr = ["One","Two","Three"];

var arr2 = arr.slice(0);

方法二:js的concat方法 

var arr = ["One","Two","Three"];

var arr2 = arr.concat();

方法三:遍历每个属性

 

var deepCopy= function(source) {

  var result={};

  for (var key in source) {

    result[key] = typeof source[key]===’object’? deepCoyp(source[key]): source[key];

  }
  return result;
}


 






以上是关于js深拷贝和浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

IOS 深拷贝和浅拷贝

深拷贝和浅拷贝怎样理解(通俗具体点儿)

JS的深拷贝和浅拷贝

JSON对象的深拷贝和浅拷贝

探究JS中对象的深拷贝和浅拷贝

前端开发:JS中深拷贝和浅拷贝的区别