Skip to content

Latest commit

 

History

History
16 lines (8 loc) · 648 Bytes

2018-06-22__deepClone.md

File metadata and controls

16 lines (8 loc) · 648 Bytes

DeepClone

需要注意的点

非原始类型需要递归copy

不可破坏原型链,可以借用Object.getPrototypeOf(object)来拿到原型,再通过Object.create来继承原型,从而保护原型链

需要考虑循环引用

包括但不限于Date RegExp Arguments Set Map Array Symbol object String object Boolean等类型,可以使用Object.prototype.toString.call来判断类型,分别做处理

一些特殊类型无需拷贝,包括function error weakMap

具体实现可以参考lodash.clonedeep