码迷,mamicode.com
首页 > 编程语言 > 详细

关于javascript中的深拷贝问题

时间:2017-03-17 11:01:13      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:script   否则   取出   jquer   lan   数组   logs   log   对象   

  一直在尝试为javascript找一个快捷可靠的对象深拷贝的方法,昨天突发奇想,把对象push到一个空数组里,然后对改数组通过concat()或slice()进行

拷贝,然后取出数组的第一个元素复制给变量,这个变量岂不就是深拷贝的对象么。说干就干,上代码

    var a = {
      b: {
        c: 1
      }
    };
    var arr = [];
    arr.push(a);
    var x = arr.slice(0);
    arr[0].b = 12;
    console.log(x[0].b);

  若成功的话,控制台里是对象{c: 1},否则是12。

技术分享

 

  失败了,看样子数组的concat、slice()等方法并不会对原数组进行深拷贝,内部的元素仍是堆地址引用。

  若要对对象进行深拷贝,还是要用jquery的extend方法,要不就用json吧,尽管json会有问题,可以参考这篇文章

 

关于javascript中的深拷贝问题

标签:script   否则   取出   jquer   lan   数组   logs   log   对象   

原文地址:http://www.cnblogs.com/zhansu/p/6564448.html

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