只拷贝一层,更深层的拷贝引用地址
实现方式
for...in
let obj={name:"zs",age:18,person:{name:"ls"}}
function clone(obj){
let cloneObj={}
for(let key in obj){
cloneObj[key]=obj[key]
}
return cloneObj;
}
let obj1=clone(obj)
obj.name="change"
obj.person.name="lz"
console.log(obj.name);//change
console.log(obj1.name);//zs
console.log(obj.person.name);//lz
console.log(obj1.person.name);//lz
Object.assign
Object.assign(newObj,oldObj)
let obj={name:"zs",age:18,person:{name:"ls"}}
let obj2=Object.assign({},obj)
//console.log(obj2.name);//zs
obj.name="change"
console.log(obj.name);//change
console.log(obj2.name);//zs
扩展运算符
let obj3={...obj}
console.log(obj3.name);//zs
obj.name="change"
console.log(obj.name);//change
console.log(obj3.name);//zs
obj.person.name="change"
console.log(obj.person.name);//change
console.log(obj3.person.name);//change