js 对象的深复制和浅复制
来源:互联网 发布:tcp监听端口阻塞 编辑:程序博客网 时间:2024/06/06 10:52
浅复制:只赋值一层对象,并不递归赋值对象内嵌套的对象
深复制:递归赋值对象中的所有值和对象
1.数组的浅复制 – slice
var arr_1 = [1,2,3];var arr_2 = arr_1.slice(0);//slice方法取出数组的每一项传入一个新数组arr_2.push(4);console.log(arr_1);//[1,2,3]console.log(arr_2);//[1,2,3,4]
2.数组的浅复制 –concat
var arr_1 = [1,2,3];var arr_2 = arr_1.concat();//concat方法取出数组的每一项传入一个新数组arr_2.push(4);console.log(arr_1);//[1,2,3]console.log(arr_2);//[1,2,3,4]
3.数组的深复制 –JSON.stringify (同样适用于对象)
//这个方法不能复制数组中带有非json数据格式,不允许的数据类型例如Functionvar arr_1 = [1,2,{a:3}];var arr_2 = JSON.parse(JSON.stringify(arr_1));//数组转为JSON字符串再转为数组arr_2[2].a = 4;console.log(arr_1);//[1,2,{a:3}]console.log(arr_2);//[1,2,{a:4}]
4.对象的的浅复制 –for in (同样适用于数组)
var obj_1 = {a:1,b:2}function copy(obj){ var newObj = {}; for(var key in obj){ newObj[key] = obj[key] } return newObj}var obj_2 = copy(obj_1);obj_2.b = 3;console.log(obj_1)//{a:1,b:2}console.log(obj_2)//{a:1,b:3}
5.对象、数组的深拷贝
var obj_1 = { school:'哈弗', grade:{ level_1:[1,2,3] }}function copy(obj){ if(Object.prototype.toString.call(obj) === '[object Array]'){ var newObj = []; }else{ var newObj = {}; } for(var key in obj){ newObj[key] = (typeof obj[key] ==='object' ? copy(obj[key]) : obj[key]); } return newObj}var obj_2 = copy(obj_1);obj_2.school = '清华';obj_2.grade.level_1.push(4);console.log(obj_1.school)//哈弗console.log(obj_2.school)//清华console.log(obj_1.grade.level_1)//[1,2,3]console.log(obj_2.grade.level_1)//[1,2,3,4]
阅读全文
0 0
- js 对象的深复制和浅复制
- js中对象的复制,浅复制(浅拷贝)和深复制(深拷贝)
- 对象的深复制和浅复制
- 深复制,浅复制,和对象赋值
- C++对象的浅复制和深复制
- Java对象的深复制和浅复制
- Java对象的深复制和浅复制
- Java对象的深复制和浅复制
- Java对象的深复制和浅复制
- Java对象的深复制和浅复制
- 细说java对象的浅复制和深复制
- Java对象的深复制和浅复制
- Java对象的深复制和浅复制详解
- 对象浅复制和深复制的几个问题
- js中的深复制和浅复制
- 谈js的浅复制和深复制
- js数组深复制和浅复制的区别
- js对象的复制
- 网络框架抽取(RxJava+Retrofit)
- 自定义View方法总结
- scrollview自动滑动到底部的问题
- 在ubuntu 14.04 64bit上安装rails遇到的一些gem问题
- JAVA调用微信投放卡券——HTML5线上发券(JS-SDK接口)
- js 对象的深复制和浅复制
- 电路设计_阅读英文数据手册并没有想象的那么难
- 函数嵌套,内置函数,闭包函数,迭代器,生成器,装饰器
- 语义分割-2:segnet网络
- android 设计模式 单例(Singleton)模式
- JAVA中List与Array之间互换
- git的分支管理功能
- DOS批处理中,处理字符串
- MySQL实现批量插入以优化性能的教程