关于javascript中的深拷贝问题
2024-10-02 00:24:55
一直在尝试为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会有问题,可以参考这篇文章。
最新文章
- android 项目中出现红色感叹号的解决方法
- LeetCode - 51. N-Queens
- java中堆栈(stack)和堆(heap)(还在问静态变量放哪里,局部变量放哪里,静态区在哪里.....进来)
- Linux平台卸载MySQL总结【转】
- 【crunch bang】安装firefox,删除iceweasel
- vsftp 用无法登陆的用户名登陆(也叫虚拟用户)并进入到自己的文件夹test
- JavaWeb 4 XML
- Zabbix实现告警分级
- Domj4读取xml文件
- 【8】JAVA---地址App小软件(AddrDaoFile .class)(数据层)
- WebDriver(Selenium2) 判断页面是否刷新的方法
- CoordinatorLayout学习笔记
- 第二章:JavaScript对象
- 探索Gallery和ImageSwitcher布局
- 201521123030 《Java程序设计》第7周学习总结
- enum与typedef enum
- boost中bind的使用
- SQL Server 锁实验(SELECT加锁探究)
- 实战ELK(7)ElasticSearch常用的基本查询语句
- 洛谷P4197 Peaks(Kruskal重构树 主席树)