Skip to content

Commit

Permalink
update: 完成cloneDeep
Browse files Browse the repository at this point in the history
  • Loading branch information
HeftyKoo committed Apr 19, 2020
1 parent 183d754 commit 15b2b42
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@
* [castArray](castArray.md)
* [keysIn](keysIn.md)
* [clone](clone.md)
* [cloneDeep](cloneDeep.md)

## License

Expand Down
1 change: 1 addition & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,4 +202,5 @@
+ [castArray](castArray.md)
+ [keysIn](keysIn.md)
+ [clone](clone.md)
+ [cloneDeep](cloneDeep.md)

36 changes: 36 additions & 0 deletions cloneDeep.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# lodash源码分析之cloneDeep

本文为读 lodash 源码的第二百篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash)

gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details)

## 依赖

```javascript
import baseClone from './.internal/baseClone.js'
```

[《lodash源码分析之baseClone》](internal/baseClone.md)


## 源码分析

`cloneDeep` 会对传入的 `value` 做深度复制,源码如下:

```javascript
const CLONE_DEEP_FLAG = 1
const CLONE_SYMBOLS_FLAG = 4
function cloneDeep(value) {
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG)
}
```

`clone` 一样,也是调用 `baseClone` 来实现,只不过 `bitmask` 传入的是 `CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG` ,也即开启深度复制和复制 `Symbol` 属性。

## License

[署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)](http://creativecommons.org/licenses/by-nc-nd/4.0/)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见: ![](https://raw.githubusercontent.com/yeyuqiudeng/resource/master/images/qrcode_front-end-article.jpg)

作者:对角另一面

0 comments on commit 15b2b42

Please sign in to comment.