浅拷贝只复制一层对象的属性,二深拷贝则复制了所有的层级。
对于简单类型来说浅拷贝,拷贝的是值,对于引用类型来说浅拷贝拷贝的是地址,修改其中一个对象的属性,则另一个对象的属性也会改变.
而深拷贝则是开辟新的栈,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。
如何实现浅拷贝,展开运算符方法
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const obj1 = {
uname: '张三',
age: 18,
gender: '男',
gfs: ['凤姐', '芙蓉姐姐', '黄蓉'],
wife: {
w1: '蔡徐坤',
w2: 'iun'
}
}
const obj2 = {...obj1}
obj2.uname = '王五'
</script>
</body>
</html>
如何实现浅拷贝,Object.assign()方法
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const obj1 = {
uname: '张三',
age: 18,
gender: '男',
gfs: ['凤姐', '芙蓉姐姐', '黄蓉'],
wife: {
w1: '蔡徐坤',
w2: 'ikun'
}
}
const obj2 = {}
Object.assign(obj2,obj1)
console.log(obj2);
</script>
</body>
</html>