首页 > 代码库 > 关于javascript中的深拷贝问题
关于javascript中的深拷贝问题
一直在尝试为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中的深拷贝问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。