Skip to content

Commit

Permalink
123
Browse files Browse the repository at this point in the history
  • Loading branch information
SK-Luffa committed Aug 14, 2024
1 parent 6d36fe8 commit d63f071
Show file tree
Hide file tree
Showing 4 changed files with 1,259 additions and 0 deletions.
Binary file modified .DS_Store
Binary file not shown.
Binary file modified docs/.DS_Store
Binary file not shown.
23 changes: 23 additions & 0 deletions docs/src/pages/FixedArticle/JavaScript/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,3 +189,26 @@ console.log(stringValue.substr(3, 7)); // "lo worl"
## 区别
- 相等操作符(==)会做类型转换再进行比较,全等操作符(===)则不允许类型转换
- null与Undefined 相等操作符(==)为true 全等操作符(===)为false

# 深拷贝和浅拷贝的区别,以及如何实现一个深拷贝

- 需要明白一点,浅拷贝只存在于引用对象中, 基本数据类型不存在浅拷贝

## 什么是浅拷贝
- 浅拷贝指的是创建新的数据,这个数据有着原始数据是性质的一份精确拷贝,如果属性是基本类型,拷贝的就是基本类型的值。如果属性是引用类型,拷贝的就是内存地址
- 浅拷贝是拷贝一层,深层次的引用类型则共享内存地址
#### 在js中存在浅拷贝的现象有:
- Object.assign
- slice() concat()
- 使用扩展运算符实现的复制

## 什么是深拷贝
- 深拷贝开辟一个新的栈,两个对象属性完全相同,但是对应两个不同的地址,修改一个对象的属性,不会改拜年另一个对象的属性
常见的深拷贝方式有:
- _.cloneDeep()
- JQuery.extend()
- JSON.stringify()
- 手写一个循环递归
# 总结
- 浅拷贝是拷贝一层,属性为对象时,浅拷贝是复制,两个对象只想同一个地址
- 深拷贝是递归拷贝深层次,属性为对象时,深拷贝时新开栈,两个对象指向不同的地址
Loading

0 comments on commit d63f071

Please sign in to comment.