Skip to content

Commit 3c55804

Browse files
committed
🐛 fix code
1 parent 51be153 commit 3c55804

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

JavaScript/浅拷贝和深拷贝.md

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,7 @@ arr.concat();
1616

1717
### 深拷贝
1818

19-
我们也能用简单的办法实现深拷贝:
20-
21-
`JSON.parse(JSON.stringify(obj))`
22-
23-
24-
25-
手动实现:
26-
27-
> 代码解析后面放出来。
19+
深拷贝解析:[如何写出一个惊艳面试官的深拷贝.](http://www.conardli.top/blog/article/JS%E8%BF%9B%E9%98%B6/%E5%A6%82%E4%BD%95%E5%86%99%E5%87%BA%E4%B8%80%E4%B8%AA%E6%83%8A%E8%89%B3%E9%9D%A2%E8%AF%95%E5%AE%98%E7%9A%84%E6%B7%B1%E6%8B%B7%E8%B4%9D.html)
2820

2921
```js
3022
const mapTag = '[object Map]';
@@ -139,22 +131,22 @@ function clone(target, map = new WeakMap()) {
139131

140132
// 防止循环引用
141133
if (map.get(target)) {
142-
return target;
134+
return map.get(target);
143135
}
144136
map.set(target, cloneTarget);
145137

146138
// 克隆set
147139
if (type === setTag) {
148140
target.forEach(value => {
149-
cloneTarget.add(clone(value));
141+
cloneTarget.add(clone(value,map));
150142
});
151143
return cloneTarget;
152144
}
153145

154146
// 克隆map
155147
if (type === mapTag) {
156148
target.forEach((value, key) => {
157-
cloneTarget.set(key, clone(value));
149+
cloneTarget.set(key, clone(value,map));
158150
});
159151
return cloneTarget;
160152
}

0 commit comments

Comments
 (0)