用于对象深度克隆的同构,可自定义和简单的javascript函数:
omniclone(source, config);
|
案例:
const omniclone = require('omniclone');
import omniclone from 'omniclone';
<p>[code]const obj = { foo: { bar: 'baz' } };
const obj2 = omniclone(obj);
obj2; // { foo: { bar: 'baz' } };
obj === obj2; // false
obj.foo === obj2.foo; // false
|
[/code]优势
- 在复制属性之前自动调用对象构造函数(可自定义的行为)
- 让你在源和结果对象之间共享[[Prototype]]对象(可自定义的行为)
- 让你克隆带有循环引用的对象(可自定义的行为)
- 让你复制getter和setter,非enumerables属性以及符号symbols (可自定义的行为)
- 正确处理String,Boolean,Number,Error和Promise对象
- 安全,类似的sibilings兄弟邻居引用而不重复
- 正确克隆Array对象(如果invokeConstructors设置了标志)
- 正确克隆RegExp和Date对象