码迷,mamicode.com
首页 > Web开发 > 详细

js深拷贝和浅拷贝

时间:2017-06-19 13:06:53      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:var   改变   浅拷贝   函数   turn   赋值   result   一个   也会   

数组的浅拷贝

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深拷贝和浅拷贝

标签:var   改变   浅拷贝   函数   turn   赋值   result   一个   也会   

原文地址:http://www.cnblogs.com/xueyy/p/7047598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!