当前位置:网站首页>深拷贝和浅拷贝
深拷贝和浅拷贝
2022-07-19 05:06:00 【龙眸】
什么是浅拷贝和深拷贝?
1.浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用(地址).
2.深拷贝拷贝多层, 每一级别的数据都会拷贝.
3.Object.assign(target,…sources) es6新增的方法 可以浅拷贝
1、浅拷贝
// 浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用
var obj = {
id: 1,
name: 'andy',
msg: {
age: 18
}
};
var o = {
};
// for (var k in obj) {
// // k 是属性名 obj[k] 属性值
// o[k] = obj[k];
// }
// console.log(o);
// o.msg.age = 20;
// console.log(obj);
console.log('--------------');
Object.assign(o, obj);
console.log(o);
o.msg.age = 20;
console.log(obj);
2.深拷贝
// 深拷贝拷贝多层, 每一级别的数据都会拷贝.
var obj = {
id: 1,
name: 'andy',
msg: {
age: 18
},
color: ['pink', 'red']
};
var o = {
};
// 封装函数
function deepCopy(newobj, oldobj) {
for (var k in oldobj) {
// 判断我们的属性值属于那种数据类型
// 1. 获取属性值 oldobj[k]
var item = oldobj[k];
// 2. 判断这个值是否是数组
if (item instanceof Array) {
newobj[k] = [];
deepCopy(newobj[k], item)
} else if (item instanceof Object) {
// 3. 判断这个值是否是对象
newobj[k] = {
};
deepCopy(newobj[k], item)
} else {
// 4. 属于简单数据类型
newobj[k] = item;
}
}
}
deepCopy(o, obj);
console.log(o);
var arr = [];
console.log(arr instanceof Object);
o.msg.age = 20;
console.log(obj);
边栏推荐
- [learning notes] "machine room reservation system" operation replay and problem summary
- 5.el与data的两种写法
- What if the game needs to be reinstalled after the steam folder is moved
- [learning notes] operation summary of "STL speech contest process management system"
- 学习日记6-数组
- 74 student management system add delete show
- Development of dynamic memory in C language
- Part 59: main c:62:9: note: use option -std=c99 or -std=gnu99 to compile your code
- 计算起始日期之间的中间日期
- 进程与线程以及进线程间通信
猜你喜欢
随机推荐
长篇详解C语言动态内存管理
91 pop up case - father passes son - son passes father
基于C语言实现的学生管理系统
92-兄弟组件间的传值问题
更易上手的C语言入门级芝士 (3) 常见关键字+define+指针+结构体(超详细)
Triangle problem worst case test case
75-局部自定义指令——bind和update方法
结构体专题
Mise en œuvre du carnet d'adresses en langage C
83 reuse of local components [parent to child]
9. Keyboard events
7.Object.defineProperty以及数据代理(数据劫持)
Using function pointer array to write calculator
微信小程序封装自定义tabbar,子页面显示tabbar,主页面也可设置(建议使用小程序原有tabbar),仅个人使用
11. Monitoring attribute - Watch
C language custom types: structure, enumeration, union
What if the game needs to be reinstalled after the steam folder is moved
74-学生管理系统-添加-删除-展示
c语言指针重难点
69 simple chat dialog - expand - recall function