一、概念
浅拷贝:浅拷贝只是拷贝一层,更深层次的拷贝只拷贝引用(拷贝最外面一层)
注意:如果浅拷贝要拷贝多层数据,只会拷贝地址
深拷贝:深拷贝拷贝多层,每一级别的数据都会拷贝
浅拷贝:
第一种方法:
var obj={
name:"zhangsan",
age:"10"
}
var o={}
for(var i in obj){
o[i]=obj[i]
}
console.log(o)
第二种方法(ES6)新增的:
Object.assign(target,sources)
*target:拷贝给谁
*sources:拷贝哪个对象
var obj={
name:"zhangsan",
age:"10"
}
var o={}
console.log(Object.assign(o,obj))
深拷贝
var obj={
name:"zs",
age:"10",
msg:{
city:"bj"
},
color:['红色','黄色']
}
var o={};
function deepClone(newobj,oldobj){
for(var k in oldobj){
//判断属性值属于哪种数据类型
//获取属性值 oldobk[k]
var item=oldobj[k];
//判断是否是数组
if(item instanceof Array){
newobj[k]=[];
deepClone(newobj[k],item)
}
//判断是否是对象
else if(item instanceof Object){
newobj[k]={};
deepClone(newobj[k],item)
}else{
//属于简单数据类型
newobj[k]=item;
}
}
}
deepClone(o,obj);
console.log(o);