...语法深拷贝
组件的...p是babel+JS语法支持
js赋值 let person2 = {...p} 是复制一份相同的数据,改原来的person数据不会影响person2,深拷贝
合并两个对象,不改变obj1的值
let obj1={
name:'name',
sex:'male',
skill(){
console.log('测试skill');
}
};
let obj2={
house:'别墅',
do(){
console.log('I test!!!');
}
};
let obj3={...obj1,...obj2};
console.log(obj3);


Object.assign()
合并对象影响原来obj1的值会,不推荐使用
let obj3 = Object.assign(obj1,obj2)
下面这种不会影响原来的
let obj4=Object.assign({},obj1,obj2);
console.log(obj4);
如何实现深拷贝?
1.用 JSON.stringify 把对象转换成字符串,再用 JSON.parse 把字符串转换成新的对象
但是需要注意的是
可以转成 JSON 格式的对象才能使用这种方法,如果对象中包含 function 或 RegExp 这些就不能用这种方法了。
2.Object.assign()拷贝
当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝。
3使用递归的方式实现深拷贝
网友评论