深度克隆对象
来源:互联网 发布:全球鹰k12和知豆哪个好 编辑:程序博客网 时间:2024/05/16 12:42
克隆的概念
- 浅度克隆:原始类型为值传递,对象类型仍为引用传递。
- 深度克隆:所有元素或属性均完全复制,与原对象完全脱离,也就是说所有对于新对象的修改都不会反映到原对象中。
看一个浅克隆例子:
//浅克隆function clone(obj) { var result = {}; for (key in obj) { result[key] = obj[key]; } return result;}var Person = { name: "jack", age: "18", Address: { province: "beijing" },};var New = clone(Person);console.log(Person.Address.province); //beijingNew.Address.province = "shanghai";console.log(Person.Address.province); //shanghai
再看一个深克隆例子:
//深度克隆function deepClone(obj) { var result, oClass = isClass(obj); if (oClass === 'Object') { //初始化result类型 result = {}; } else if (oClass === 'Array') { result = []; } else { return obj; } for (key in obj) { var copy = obj[key]; if (isClass(copy) == 'Object') { result[key] = arguments.callee(copy);////递归调用 } else if (isClass(copy) == 'Array') { result[key] = arguments.callee(copy); } else { result[key] = obj[key]; } } return result;}function isClass(o) {//判断传入的类型 if (o === null) return 'Null'; if (o === undefined) return 'Undefined'; return Object.prototype.toString.call(o).slice(8, -1);}var Person = { name: "jack", age: "18", Address: { province: "beijing" },};var New = deepClone(Person);New.name = "tom";New.Address.province = "shanghai";console.log(Person.name); //jackconsole.log(Person.Address.province); //beijingconsole.log(New.name); //tomconsole.log(New.Address.province); //shanghai
阅读全文
1 0
- js对象深度克隆
- Java对象深度克隆
- 深度克隆对象
- C#对象深度克隆
- JavaScript对象深度克隆
- 深度克隆对象
- JavaScript 深度克隆 JSON 对象
- JAVA对象的深度克隆
- javascript深度克隆一个对象
- JAVA对象的深度克隆
- JavaScript的对象深度克隆
- javascript深度克隆一个对象
- js对象的深度克隆!
- JS对象深度克隆实现
- js对象的深度克隆
- js对象的深度克隆
- java对象克隆之深度克隆 deep clone
- 常见数据类型的克隆(内含对象的深度克隆)
- UVA10537
- How Many Nines
- HDU
- cookie、session与token
- LINUX 脚本编写
- 深度克隆对象
- 文件操作的系统调用之open,read
- CSS调试学习总结
- EL表达式和JSTL标签库使用
- java类设计的标准格式
- JavaScript(3)__Js基础<数组>
- 字符串逆序
- 随机分组
- rabbitmq 交换模式-Fanout