javascript实现深拷贝的办法
来源:互联网 发布:mac usb耗电量大 编辑:程序博客网 时间:2024/05/17 01:36
深拷贝指的是对 对象属性所引用的对象全部进行新建对象的复制,以保证深复制的对象的引用,不包含任何原有对象或对象图上的任何对象,隔离出两个完全不同的对象图。
解决的办法有:
1.用jquery的extend方法,把对象合并到新的对象去,会返回一个深层次的副本。
2.使用JSON的序列化,var b = JSON.stringify(a); 在反序列化:JSON.parse(b);
//这个函数可以深拷贝 对象和数组var cloneObj = function(obj){ var str, newobj = obj.constructor === Array ? [] : {}; if(typeof obj !== 'object'){ return; } else if(window.JSON){ str = JSON.stringify(obj), //系列化对象 newobj = JSON.parse(str); //还原 } else { for(var i in obj){ newobj[i] = typeof obj[i] === 'object' ? cloneObj(obj[i]) : obj[i]; } } return newobj;};http://www.zhihu.com/question/23031215/answer/31944721
例子:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body></body><script> var a={q:1,w:2,m:'k'}; /*var b=a; b.w='mm'; console.log(a); console.log(b);*/ console.log(JSON.stringify(a)); var c = JSON.parse(JSON.stringify(a)); c.w='yy'; console.log(a); //{q:1,w:2,m:'k'}; console.log(c); //{q:1,w:2,m:'yy'};</script><script> var a = { q:1, w:2, e:3 } function copyAndModify(oldObj, name, value) { var newObj = oldObj; newObj[name] = value; return newObj; } var b = copyAndModify(a, 'q', 'q'); console.log(b);</script><script> function extend(to, from) { for (var key in from) { to[key] = from[key]; } return to; }; var a = { q:1, w:2, e:3 }; var b = {}; extend(b, a); a.q = 'q'; console.log(a.q); //q console.log(b.q); //1</script></html>
0 0
- javascript实现深拷贝的办法
- javascript深拷贝的实现
- JavaScript 实现深拷贝
- JavaScript对象的浅拷贝和深拷贝简单实现
- Javascript浅拷贝与深拷贝实现
- Javascript浅拷贝与深拷贝实现
- JavaScript实现深拷贝与浅拷贝
- JavaScript的深拷贝
- javascript深拷贝代码实现
- Java实现文件拷贝的4种办法
- JavaScript的深拷贝与浅拷贝
- JavaScript的深拷贝和浅拷贝
- JavaScript 的深拷贝和浅拷贝
- JavaScript 的深拷贝和浅拷贝
- javascript的浅拷贝与深拷贝
- javascript的克隆--深拷贝
- 禁止拷贝文件的办法
- 深拷贝的实现
- 一些有用的网站收藏
- HDU 1248 寒冰王座
- JAVA笔记之RandomAccessFile
- STL源码剖析(三)---迭代器
- 前端学习路线
- javascript实现深拷贝的办法
- Ubuntu安装配置Samba服务器
- Hive2.1.0安装及其环境配置
- 学习地址【后续会一直添加】
- No entity found for query
- 【CodeForces】448D - Multiplication Table(二分)
- hdu1113-字符查找问题 map容器
- [Leetcode]138. Copy List with Random Pointer
- 八皇后问题