Skip to content
On this page

深拷贝

题目

手写 JS 深拷贝

分析

这是一个很常见的问题,看似也很简单,但是如果考虑到“高质量代码”的要求,写起来还是挺麻烦的。
别说写代码,就本节所有的情况你能否考虑全面,这都不一定。

错误答案1

使用 JSON.stringifyJSON.parse

  • 无法转换函数
  • 无法转换 Map Set
  • 无法转换循环引用

PS:其实普通对象使用 JSON API 的运算速度很快,但功能不全

错误答案2

使用 Object.assign —— 这根本就不是深拷贝,是浅拷贝 !!!

错误答案3

只考虑了普通的对象和数组

  • 无法转换 Map Set
  • 无法转换循环引用

正确答案

参考代码 clone-deep.ts


循环引用 Map Set 函数

Released under the MIT License.