深浅拷贝
Posted j-luck
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深浅拷贝相关的知识,希望对你有一定的参考价值。
// 浅拷贝只拷贝最外一层,更深层次对象级别的只拷贝引用
// 深拷贝拷贝多层,每一级别的数据都会拷贝
var obj = {
id: 1,
name: ‘tom‘,
msg:{
age: 18
},
color: [‘pink‘, ‘red‘],
add: null
}
var o = {}
// -- 浅拷贝
// for(var key in obj){
// o[key] = obj[key];
// }
// es6 浅拷贝的语法糖
Object.assign(o, obj)
console.log(o)
// 封装函数 -- 深拷贝
newCopy = {}
function deepCopy(newObj, oldObj) {
for(var key in oldObj){
// 判断数值的数据类型
var item = oldObj[key];
// 注意 先判断是否是数组,在判断是否是对象
// 判断 -- 数组
// 判断 -- 对象
// 判断 -- 简单数据类型
if(item instanceof Array){
newObj[key] = [];
deepCopy(newObj[key], item)
}else if(item instanceof Object){
newObj[key] = {}
deepCopy(newObj[key],item)
}else{
newObj[key] = item;
}
}
}
deepCopy(newCopy, obj)
console.log(newCopy)
以上是关于深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章