update: 剩余参数

This commit is contained in:
qianguyihao
2020-07-31 22:07:19 +08:00
parent 0c410c9736
commit 72be5e546f
4 changed files with 124 additions and 33 deletions

View File

@@ -0,0 +1,60 @@
## 对象赋值
### Object.assgin() 实现浅拷贝
代码举例
```js
const obj1 = {
name: 'qianguyihao',
age: 28,
desc: 'hello world',
};
const obj2 = {
name: '许嵩',
sex: '男',
};
// 【关键代码】浅拷贝:把 obj1 赋值给 obj2。这行代码的返回值也是 obj2
Object.assign(obj2, obj1);
console.log(JSON.stringify(obj2));
```
打印结果
```
{"name":"qianguyihao","sex":"男","age":28,"desc":"hello world"}
```
注意**上面这行代码在实际开发中会经常遇到一定要掌握**它的作用是 obj1 的值追加到 obj2 如果两个对象里的属性名相同 obj12 中的值会被 obj2 中的值覆盖
## 数组赋值
### 扩展运算符
```js
arr2 = arr1;
```
上方代码中其实是让 arr2 指向 arr1 的地址也就是说二者指向的是同一个内存地址
如果不想让 arr1 arr2 指向同一个内存地址我们可以借助扩展运算符来做
```javascript
let arr2 = [...arr1]; //arr2 会开辟新的内存地址
```
参考链接
- [javaScript中浅拷贝和深拷贝的实现](https://github.com/wengjq/Blog/issues/3)

View File

@@ -1,24 +0,0 @@
## 浅拷贝
对于对象或数组类型当我们将a赋值给b然后更改b中的属性a也会随着变化
也就是说a和b指向了同一块堆内存所以修改其中任意的值另一个值都会随之变化这就是浅拷贝
## 深拷贝
那么相应的如果给b放到新的内存中将a的各个属性都复制到新内存里就是深拷贝
也就是说当b中的属性有变化的时候a内的属性不会发生变化
参考链接
- [深拷贝与浅拷贝的实现](http://www.alloyteam.com/2017/08/12978/)
- [javaScript中浅拷贝和深拷贝的实现](https://github.com/wengjq/Blog/issues/3)